Ansible安装

Ansible安装

Scroll Down

Ansible

简介

ansible是基于Python语言开发的配置管理工具,批量分发软件,部署任务。
ansible

ansible框架

核心core:ansible
主机列表:host inventory,记录着需要部署服务的主机ip、域名、主机名
核心模块:core modules
扩展模块:consume modules
链接插件:connectiors plugin,SSH
插件:olugins,log,mail

实验步骤

第一台上操作:

生成ssh密钥

ssh-keygen

吧密钥拷贝出去

ssh-copy-id 192.168.43.3
ssh-copy-id 192.168.43.28

安装软件包

yum -y install ansible

更改hosts文件

vim /etc/ansible/hosts
[web1]      #这个模块的名字,以及那些主机属于这个模块
192.168.43.28   #这个是你要管理的主机ip
192.168.43.3
[web2]
192.168.43.57

查看ansible有多少个核心模块

ansible-doc -l   

ansible的常用模块

ansible ip/domain_name/hostname/group_name -m module_name -a "job"

ansible命令解析

ansible web1 -m user -a "name=user1 uid=501"    #web1是指定的区域名、模块名
#-m  指定模块
#-a  -m模块的参数

command模块命令
ping:用来测试ansible预远程主机的链接情况 例:ansible all -m ping //这个是测试你所连接的主机是不是都是好的,绿色的是正确的 颜色分为四种:黄色:表示成功,修改了内容 绿色:表示成功 红色:表示错误没有连接成功 紫色:表示警告2、command:在远程主机上运行指定命令要加 -a
例:

ansible all -m command -a "ls /home"

chdir:切换工作目录

ansible  web1 -m command -a ""

creates:当指定的文件存在是不执行后面的命令,不存在则执行后面的命令

ansible web1 -m command -a "creates=/etc/haha ls /home"

removes

ansible web1 -m command -a "removes=/etc/fstab ls /home"

shell模块命令:
script模块:在远程主机上执行指定的ansible中的脚本文件
user模块:创建、删除、管理远程主机上的用户
参数:
name:指定要管理的用户的名字,如果该用户名在远程主机上不存在则创建
例:

ansible web1 -m user -a "name=user1"

password:对指定的用户进行修改密码,如果密码存在则覆盖
例:

openssl passwd -1 123.com  //生成密文密码,-1 是使用MD5加密
ansible web1 -m user -a 'name=user1 password="$1$5sKX.H8d$yi.j90HD8d7XMrrfXXa1L."'

uid:修改用户的uid
例:

ansible web1 -m user -a "name=user1 uid=501"

shell:指定用户的shell环境
例:

ansible web1 -m user -a "name=user1 shell=/sbin/nologin"

group:修改用户的基本组
例:

ansible web1 -m user -a "name=user1 group=root"

groups:给用户指定附加组
append=yes
例:

ansible web1 -m user -a "name=user1 groups=user1 append=yes"

state=absent:删除指定用户
remove=yes:删除用户的相关数据
例:

ansible web1 -m user -a "name=user1 state=absent remove=yes"

group模块:创建、删除、管理远程主机上组
name:指定用户组名,如果远程主机不存在则创建
例:

ansible web1 -m group -a "name=group1"

gid:修改组的gid
例:

ansible web1 -m group -a "name=group1 gid=1982"

state=absent:删除指定的组
例:

ansible web1 -m group -a "name=group1 state=absent"

copy模块:将ansible主机上的文件拷贝到远程主机上
src:复制本地的文件
dest:复制到所存放的位置
例:

ansible web1 -m copy -a "src=/bb dest=/"

content:修改指定文件的内容
例:

ansible web1 -m copy -a 'content="hehe" dest=/bb'

force=no:当拷贝的文件与远程主机的一样不进行更改内容,不加这个默认覆盖
例:

ansible web1 -m copy -a 'src=/bb dest=/bb force=no"

backup:当拷贝的文件名与远程主机一样,会进行备份然后在覆盖
owner:指定要拷贝的文件的属主
group:指定要拷贝的文件的属组
mode:指定要拷贝文件的权限
例:

ansible web1 -m copy -a "src=/cc dest=/ owner=ceshi group=ceshi mode=777"

file模块:创建、删除、管理远程主机上的文件
参数:
path:指定文件见的路径
state:
touch:指定文件不存在,则创建普通文件
directory:指定的文件不存在,则创建目录
link:指定的文件不存在,则创建软连接与src一起使用
absent:删除指定的文件
例:

ansible web1 -m file -a "path=/xixi state=touch"

例:

ansible web1 -m file -a "path=/xixi11 state=directory" 

例:

ansible web1 -m file -a "path=/xixi22 state=link src=/xixi"

例:

ansible web1 -m file -a "path=/xixi state=absent"

owner:创建时修改文件的属主
group:创建时修改文件的属组
mode:创建时修改文件的权限
例:

ansible web1 -m file -a "path=/xixi owner=ceshi group=ceshi mode=777"

cron模块:
crontab -e
* * * * * job //job要执行的任务 分时日月周
* 14 * * 3 touch /three
@reboot touch /three //@reboot每次重启
@hourly touch /three //@hourly每个小时
@daily
参数:
name:给任务起个名字
minute
hour
day
month
special_time:reboot,hourly,daily,monthly,year

yum模块:在远程主机上用yum安装软件
name:软件包的名字
state:
安装:installed、lastest
删除:removed、absent
disable_gpg_check=yes:不要对安装的软件进行秘钥检查
例:

ansible web1 -m yum -a "name=mariadb-server state=installed disable_gpg_check=yes"

service模块:管理远程主机上的服务
参数:
name:指定管理的服务的名字
state:
started:开启
stopped:关闭
restarted:重启
reloaded:重新加载配置文件
enabled:设置为开机自启动
例:

ansible web1 -m service -a "name=maridb-server state=started"

playbook:剧本
yaml:yaml an't markdown language,yaml不是标记语言
语法格式:
--- //文件的开头,三个横岗 filename.yaml/filename.yam 后缀名
区分大小写:缩进用空格来表示,不用制表符(就是TAB)

one
	two-1
	two-2
		three-1
		three-2   #用空格来表示层级关系

#表示是注释
数据类型:
- fruit: apple
对象: 键值对
值:数字,字符串、布尔值(true,false)
数字、字符串、布尔值

 ansible-playbook --syntax-check service.yaml  #检查playbook的语法真确与否  #这是你文件名字
ansible-playbook    #执行playbook文件

例:

ansible-playbook /root/service.yaml     #后面加你要执行文件的绝对路径
hosts: web1    #你要让那些主机执行,可以写ip,可以写组
remote_user: root   #要用什么用户执行下面的操作

tasks: 这些都是固定的单词

    - yum: name=mariadb-server state=installed disable_gpg_check=yes
    - name: install httpd
      yum: name=httpd state=installed disable_gpg_check=yes
    - service: name=mariadb state=started
    - service: name=httpd state=started