02-playbook 剧本.note
·注意:有时评分表会运行两次剧本,因此写剧本时必须要保证,第二次运行时,不会出现 changed,不会报错,如果是使用模块,那么模块有幂等性,可以不用管,但是如果是使用 raw 和 shell,那么就必须加上:“changed_when: false”
一、语法
---
- name: Playbook # 定义一个任务
hosts: all # 定义要执行该任务的主机有哪些
gather_facts: False # 关闭环境信息收集,提升响应速度
tasks:
- name:
[模块]二、书写剧本:
1、init:
vim 01-init.yml

·当使用 raw、shell 进行 apt 时的幂等性:

因为 只有当 apt下载的软件包没有被下载时,才会有 will be installed 的输出,让 apt 的输出注册到 output 变量中,在 chenged_when 中定义,当 will be installed 存在 output 变量中时,如果存在,就会输出 true,而changed_when 接收到 true后就会输出 changed,如果不存在,那么就会输出 false,而 changed_when 接收到 false 后就会输出 OK

2、iptables:
·注意:配置iptables时,注意要允许本机(Ansible主控端)进行访问(允许TCP22端口即可),否则Ansible主控端将无法访问到 被控端

·方式一(推荐):先在被控端上配置好 iptables,然后将 iptables 保存到文件中,然后使用 copy 模块将其 copy到被控端:
·方式二:使用 iptables 模块
vim 02-iptables.yml·常用参数:
ansible.builtin.iptables:
table: //指定表(filter、nat)
chain: //指定链(INPUT、OUTPUT、POSTROUTING)
source: //源地址
policy //设置默认策略(ACCEPT、DROP)
jump //设置操作(ACCEPT、DROP)