一、熟悉软件部署流程
二、熟悉ansible软件模块使用
三、熟悉ansible剧本编写规范
(ansible 临时实现批量管理功能
playbook 永久实现批量管理功能)
四、剧本编写常见错误:
1、剧本语法规范是否符合(空格 冒号 短横线)
2、剧本中模块使用是否正确
3、剧本中一个name标识下面只能写一个模块任务信息
4、 剧本中尽量不要大量使用shell模块
一、剧本编写
****服务端****
[root@m01 kitty]# mkdir /ansible-playbook
[root@m01 kitty]# cd /ansible-playbook
[root@m01 ansible-playbook]# vim rsync_server.yaml
- hosts: rsync_server
tasks:
- name: 01-install rsync
yum: name=rsync state=installed
- name: 02-push conf file
copy: src=/etc/ansible/server_file/rsync_server/rsyncd.conf dest=/etc/ ##拉取rsync配置文件
- name: 03-create user
user: name=rsync create_home=no shell=/sbin/nologin
#shell: useradd rsync -M -s /sbin/nologin ##shell不要多用,容易报错。
- name: 04-create backup dir
file: path=/backup state=directory owner=rsync group=rsync
- name: 05-create password file
copy: content=rsync_backup:oldboy123 dest=/etc/rsync.password mode=600
- name: 06-start rsync server
service: name=rsyncd state=started enabled=yes
**客户端**
- hosts: rsync_clients
tasks:
- name: 01-install rsync
yum: name=rsync state=installed
- name: 02-create password file
copy: content=kitty123 dest=/etc/rsync.password mode=600
- name: 03-create test file
file: dest=/tmp/test.txt state=touch
- name: 04-check test
shell: rsync -avz /tmp/test.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password ##一个剧本使用一次shell
二、主机清单配置
ansible配置文件内在 etc/ansible/hosts中
==================================================
第一种方式: 分组配置主机信息
[web]
172.168.3.7
172.168.3.8
172.168.3.9
[data]
172.168.3.31
172.168.3.41
前面加上名称
[root@m01 ansible-playbook]# ansible data -a "hostname"
172.168.3.31 | CHANGED | rc=0 >>
nfs01
172.168.3.41 | CHANGED | rc=0 >>
backup
====================================================
第二种方式: 主机名符号匹配配置
[web]
172.16.3.[7:9] ##7~9(地址)
[web]
web[01:03] ##在/etc/hosts中之前配置过匹配的信息,若是删除了相对应的匹配信息则这条命令不管不用
如172.168.3.7为web01 ##web01~web03
====================================================
第三种方式: 跟上非标准远程端口
[web]
web01:52113
##端口号变了,比如修改了 /etc/ssh/sshd_config 端口号为52113
172.168.3.7:52113
=====================================================
第四种方式: 主机使用特殊的变量
[web]
172.168.3.7 ansible_ssh_port=52113 ansible_ssh_user=root ansible_ssh_pass=123456
[web]
web01 ansible_ssh_host=172.168.3.7 ansible_ssh_port=52113 ansible_ssh_user=root ansible_ssh_pass=123456 ##这种方式需要 hosts文件配置合适。
=====================================================
第五种方式: 主机组名嵌入配置
[rsync:children] --- 嵌入子组信息
rsync_server ##服务端
rsync_client ##客户端
[rsync_server]
172.168.3.41
[rsync_client]
172.168.1.31
172.168.3.7
[web:vars] --- 嵌入式变量信息
ansible_ssh_host=172.168.3.7
ansible_ssh_port=52113
ansible_ssh_user=root
ansible_ssh_pass=123456
[web]
web01
三、剧本的扩展功能配置
1、在剧本编写中设置变量信息
2、在剧本编写中设置注册信息
3、在剧本编写中设置判断信息
4、在剧本编写中设置循环信息
5、在剧本编写中设置错误忽略
6、在剧本编写中设置标签信息
7、在剧本编写中设置触发信息
8、在剧本编写中设置剧本整合
四、在剧本文件中设置变量信息
1、直接在剧本文件中编写(次优先)
vars:
kitty01=data01
kitty02=data02
===================================================
2、在命令中进行指定(最优先)
ansible-playbook --extra-vars=oldboy01=data01
===================================================
3、在主机清单中进行编写(最后 )
[kitty]
kitty01=data01
kitty02=data02