playbook
剧本简介
YAML文件开头需要先写三个减号---,多个分组信息需要间隔一致才能执行,上下也要对齐,后缀名一般为.yml
Playbook剧本文件的结构由四部分组成——target、variable、task、handler。target部分用于定义要执行剧本的主机节点范围、variable部分用于定义剧本执行时要用的变量、task部分用于定义将在远程主机上执行的任务列表、handler部分用于定义执行完成后需要调用的后续任务。
其中name字段代表此项Play(动作)的名字,可自行命名,没有限制,用于在执行过程中提示用户执行到了那一步,以及帮助管理员日后阅读时回忆起这段代码的作用。
hosts字段代表要在哪些主机节点上执行该剧本,多个主机组之间用逗号间隔,若需要对全部主机进行操作则用all参数。
tasks字段用于定义要执行的任务,每个任务都要有一个独立的name字段进行命名,并且每个任务的name字段和模块名称都要严格上下对齐,参数要单独缩进。
剧本示例
cat > /opt/packages.yml << EOF
---
- name: 安装软件包
hosts: balancers
tasks:
- name: install mariadb
yum:
name: mariadb
state: latest
EOF执行剧本
ansible-playbook /opt/packages.ymlplaybook 安装 Zabbix agent
编写剧本
vim install_zabbix_agent2.yml
- name: install zabbix_agent2
hosts: all
vars:
# 定义一个变量存储客户端文件
agent_file: zabbix-agent2-5.4.8-1.el7.x86_64.rpm
tasks:
# 拷贝rpm包到远程,rpm包名为上方定义的变量
- name: copy file to remote
copy:
src: "/opt/{{ agent_file }}"
dest: /tmp
- name: install rpm
command: rpm -i "/tmp/{{ agent_file }}"
# 停止老服务
- name: stop old agent
command: systemctl disable --now zabbix-agent
# 修改配置文件中的 Server=127.0.0.1 为 Server=10.0.0.11
- name: set config file Server
lineinfile:
path: /etc/zabbix/zabbix_agent2.conf
regexp: '^Server=127.0.0.1'
line: "Server=10.0.0.11"
- name: set config file ServerActive
lineinfile:
path: /etc/zabbix/zabbix_agent2.conf
regexp: '^ServerActive=127.0.0.1'
line: "ServerActive=10.0.0.11"
- name: set config file Hostname
lineinfile:
path: /etc/zabbix/zabbix_agent2.conf
regexp: '^Hostname=Zabbix server'
line: "Hostname={{ ansible_default_ipv4.address }}"
# 启动服务
- name: start agent2
command: systemctl enable --now zabbix-agent2检查剧本语法正确性
ansible-playbook --syntax-check install_zabbix_agent2.yml执行剧本
ansible-playbook install_zabbix_agent2.ymlLast updated