1.剧本模式使用方法
1.创建/server/scripts/playbook目录,用于存放剧本
2.将/etc/ansible/hosts主机清单文件复制到该目录下,cp /etc/ansible/hosts .
3.书写剧本,剧本后缀名需要为yml,举报人你格式如下图,hosts代表执行的终端,与主机清单相对应,此处name为执行步骤,方便剧本执行出错定位错误。
4.执行剧本,ansible-playbook -i hosts 01.show.yml,此处-i,指定主机清单文件,01.show.yml为执行的
案列01:书写剧本,将管理端文件发送给所有被管理端
bash
---
- hosts: all
tasks:
- name: 01创建目录
file:
path: /server/files/
state: directory
- name: 02分发文件
copy:
src: /server/files/day022.txt
dest: /server/files/
案例02:书写剧本,给所有被端粒段安装zabbix
bash
---
- hosts: all
tasks:
- name: 01
file:
path: /tmp/tools/app
state: directory
- name: 02
ansible.builtin.get_url:
validate_certs: no
url: https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-agent2-6.0.7-1.el7.x86_64.rpm
dest: /tmp/tools/app
- name: 03
yum:
name: /tmp/tools/app/zabbix-agent2-6.0.7-1.el7.x86_64.rpm
state: installed
- name: 04
systemd:
name: zabbix-agent2
enabled: yes
state: started
2.剧本的变量
1.在剧本中定义
2.变量文件
3.共用变量,主机组变量
4.register变量(注册变量)如:ip=`hostname -I`
剧本中定义使用方法:在host下一行定义
bash
---
- hosts: all
vars:
dir: /tmp/tools/app (定义变量dir)
tasks:
- name: 01
file:
path: "{{ dir }}"
state: directory
变量文件方法使用变量
1.定义变量文件的变量
bash
---
- hosts: all
vars_files:变量文件路径
共用变量根据主机组使用变量,group_vars会自动根据主机清单匹配,剧本中直接使用变量。
bash
xxxx-check.yml
group_vars/
lb/vars.yml #存放lb组的变量
web/vars.yml #存放web组的变量
data/vars.yml #存放xxx组的变量
all/vars.yml #所有主机共用的变量
一般使用all分组即可,把所有变量存放在一起,供剧本使用
register注册变量需要配合shell一起使用,如下所示
bash
---
- hosts: all
tasks:
- name: 01
shell: date +%F
register: shijian
- name: 02
debug:
msg: "{{ shijian.stdout }}"
3.facts变量
facts变量是ansible的内置变量,通过setup模块获取
禁用facts变量可以提高ansible运行速度,hosts下一行写gather_facts:no