Ansible-Playbook
剧本的组成
1、定义主机信息 hosts
2、做什么事 tasks
剧本编写规范
属于py的yaml格式,三点要求
1、合理的信息缩进,一定不能用tab键缩进,两个空格表示一个缩进关系
2、冒号的使用方法,使用冒号时要有空格信息,以冒号结尾,冒号信息出现在注释说明中都不需要加空格了
3、短横线应用 -(列表功能),使用短横线构成列表信息,短横线后面需要有空格
编写剧本
剧本最好放到统一的目录,我这里放到/etc/ansible/ansible-playbook下
vim rsync_server.yaml
- hosts: 192.168.168.129
tasks:
- name: 01 install resync
yum: name=rsync state=installed
- name: 02 push conf file
copy: src=/tmp/rsyncd.conf dest=/etc/
执行剧本
·1、检测剧本的语法格式
ansible-playbook --syntax-check rsync_server.yaml
2、彩排剧本
ansible-playbook -C rsync_server.yaml
3、执行剧本
ansible-playbook rsync_server.yaml
主机清单配置
分组配置主机信息
vim hosts
[test01]
192.168.168.129
192.168.168.130
[test02]
192.168.168.131
192.168.168.132
操作过程
ansible test01 -m shell -a "date"
ansible test02 -m shell -a "date"
主机名符号匹配配置
vim hosts
#IP地址
[test01]
192.168.168.[129:132]
#主机名
[test01]
test[01:04]
支持非标准远程端口配置
vim hosts
[test01]
192.168.168.129:12345
支持主机的特殊变量
vim hosts
[test01:vars]
ansible_ssh_user=root
ansible_ssh_pass=1
[test01]
192.168.168.129 ansible_ssh_port=12345
192.168.168.130
192.168.168.131
192.168.168.132
主机组名嵌入式配置
vim hosts
[test:children] #test组包括test01和test02的所有的IP
test01
test02
[test01]
192.168.168.129
192.168.168.130
[test02]
192.168.168.131
192.168.168.132
剧本的扩展功能
设置变量信息
- 在剧本中定义变量
vim rsync_server.yaml
- hosts: 192.168.168.129
vars:
cfgfile: /tmp/rsyncd.conf
tasks:
- name: 01 install resync
yum: name=rsync state=installed
- name: 02 push conf file
copy: src={{ cfgfile }} dest=/etc/
- name: start service
serivce: name=rsyncd state=started enabled=yes
- 在命令行中定义变量
vim rsync_server.yaml
- hosts: 192.168.168.129
tasks:
- name: 01 install resync
yum: name=rsync state=installed
- name: 02 push conf file
copy: src={{ cfgfile }} dest=/etc/
ansible-playbook -e cfgfile=/tmp/rsyncd.conf rsync_server.yaml
- 在主机清单中配置变量
vim hosts
192.168.168.129 cfgfile=/tmp/rsyncd.conf
vim rsync_server.yaml
- hosts: 192.168.168.129
tasks:
- name: 01 install resync
yum: name=rsync state=installed
- name: 02 push conf file
copy: src={{ cfgfile }} dest=/etc/
注册变量
vim hosts
192.168.168.129 cfgfile=/tmp/rsyncd.conf
vim rsync_server.yaml
- hosts: 192.168.168.129
tasks:
- name: 01 install resync
yum: name=rsync state=installed
- name: 02 push conf file
copy: src={{ cfgfile }} dest=/etc/
- name: register var
command: date +"%F_%T"
register: datetime
- name: bakup cfg
shell: cp /etc/rsyncd.conf /etc/rsyncd.conf_{{ datetime.stdout }}
############################################
str.stdout 标准输出
str.stderr 错误输出
str.rc 命令返回值
判断
判断条件只能是setup模块中有的
vim hosts
192.168.168.129 cfgfile=/tmp/rsyncd.conf
vim rsync_server.yaml
- hosts: test
tasks:
- name: 01 install resync
yum: name=rsync state=installed
- name: 02 push conf file
copy: src={{ cfgfile }} dest=/etc/
when: (ansible_all_ipv4_addresses == "192.168.168.129")
- name: register var
command: date +"%F_%T"
register: datetime
- name: bakup cfg
shell: cp /etc/rsyncd.conf /etc/rsyncd.conf_{{ datetime.stdout }}