ansible playbooks编写规范,可以通过ansible主机,对目标主机进行管理。
1.加载ansible环境
(1)登陆ansible主机,切换到ansible,运行,加载3.6虚拟环境
[root@bigdata modules]# su - deploy
[deploy@bigdata ~]$ source .py3-a2.5-env/bin/activate
(.py3-a2.5-env) [deploy@bigdata ~]$
(2)加载ansible2.5,到当前deploy用户
(.py3-a2.5-env) [deploy@bigdata ~]$ source /home/deploy/.py3-a2.5-env/ansible/hacking/env-setup –q
查看版本
(.py3-a2.5-env) [deploy@bigdata ~]$ asible-playbook --version
-bash: asible-playbook: command not found
(.py3-a2.5-env) [deploy@bigdata ~]$ ansible-playbook --version
ansible-playbook 2.5.15 (stable-2.5 4f5084d9d2) last updated 2019/10/03 12:29:27 (GMT +800)
config file = None
configured module search path = ['/home/deploy/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /home/deploy/.py3-a2.5-env/ansible/lib/ansible
executable location = /home/deploy/.py3-a2.5-env/ansible/bin/ansible-playbook
python version = 3.6.5 (default, Oct 3 2019, 08:13:47) [GCC 4.4.7 20120313 (Red Hat 4.4.7-23)]
2.playbooks目录
(.py3-a2.5-env) [deploy@bigdata ~]$ tree
.
├── deploy.yml:playbook任务入口
├── inventory:server详细清单目录
│?? └── testenv具体清单与变量声明文件
└── roles:roles任务列表
└── testbox:testbox详细任务
└── tasks
└── main.yml:testbox主任务文件
3.testenv:目标主机名和对应的变量名称
[testservers] #Server组列表
hadoop02 #目标部署服务器主机名
[testservers:vars] #Server组列表参数
server_name=hadoop02 #目标主机key/value参数
user=root
output=/root/test.txt
4.main.yml
- name: Print server name and user to remote testbox
shell: "echo 'Currently {{ user }} is logining {{ server_name }}' > {{ output }}"
备注:
(1) 第一行“-”后面一个空格,再添加name
(2) 第二行,shell要和name对齐,使用shell模块执行命令
(3) 其中{{}}中变量对应testenv中文件内容
[testservers:vars]
server_name=hadoop02
user=root
output=/root/test.txt
5.deploy.yml: playbook入口
- hosts: "testservers" #server列表
gather_facts: true #获取server基本信息
remote_user: root #目标服务器系统用户指定
roles:
- testbox #进入roles/testbox任务目录
6.ssh免密要认证
Ansible可知直接ssh直接登陆目标主机,而不需要密码
(1)ansible主机生成ssh
ssh-keygen -t rsa
(2)Ansible服务器的公钥分配给目标主机
ssh-copy-id -i /home/deploy/.ssh/id_rsa.pub [email protected]
(3)修改hosts文件,添加
192.168.31.4 hadoop02
7.启动playbook部署工作执行playbook
(.py3-a2.5-env) [deploy@bigdata ~]$ cd /home/deploy/test_playbooks
(.py3-a2.5-env) [deploy@bigdata test_playbooks]$ ansible-playbook -i inventory/testenv ./deploy.yml
PLAY [testservers] ****************************************************************************
TASK [Gathering Facts] ************************************************************************
ok: [hadoop02]
TASK [testbox : Print server name and user to remote testbox] *********************************
changed: [hadoop02]
PLAY RECAP ************************************************************************************
hadoop02 : ok=2 changed=1 unreachable=0 failed=0
备注:
(1)inventory/testenv指定部署目标主机域名
(2)deploy.yml指明部署具体任务位置:roles-》testbox
8.查看结果
登陆到hadoop02主机
[root@bigdata ~]# cd /root/
[root@bigdata ~]# vi test.txt
成功到目标主机
Currently root is logining hadoop02
1.File模块
在目标主机创建文件或目录,并赋予其系统权限
2.Copy模块
实现ansible服务端到目标主机的文件传送
3.Stat模块
获取远程文件状态信息
4.Debug模块
打印语句到ansible执行输出
5.Command/Shell模块
用来执行Linux目标主机命令行
6.Template模块
实现ansible服务端到目标主机的jinja2模板传送
7.Packaging模块
调用目标主机系统包管理工具(yum,apt)进行安装
8.Service模块
管理目标主机系统服务