playbook编写(一)ansible理论知识

handles和notify

首先写一个装包 复制配置文件 启动服务的playbook

ansible检测端口是否存在 ansible 指定端口_ansible检测端口是否存在

由于本机已经装有httpd服务,直接用该配置文件。先将其拷贝到当前目录下,这样在playbook里面就可以使用相对路径

ansible检测端口是否存在 ansible 指定端口_变量名_02

ansible-playbook -C httpd.yml 可预运行一遍,返回执行的改变数目

执行该脚本,并检查对应机器上80端口是否开启,配置文件中设置的是监听80

ansible检测端口是否存在 ansible 指定端口_ansible检测端口是否存在_03

现在更改其配置文件,将监听端口改为8080
再次执行playbook
第一步为绿色 因为该包之前已经装过了 无需再装
第二步为黄色 因为配置文件有变,已经将新的更改过的配置文件复制到/etc下
第三步开启
再次查看被控主机上的监听端口 仍然为80,配置文件未生效

ansible检测端口是否存在 ansible 指定端口_ansible检测端口是否存在_04

使用handlers触发器

ansible检测端口是否存在 ansible 指定端口_ansible检测端口是否存在_05

再次执行剧本,查看结果

ansible检测端口是否存在 ansible 指定端口_变量名_06

handlers可定义多个

ansible检测端口是否存在 ansible 指定端口_变量名_07


handlers具体用法

tags

ansible检测端口是否存在 ansible 指定端口_配置文件_08

通过标签执行特定task

ansible检测端口是否存在 ansible 指定端口_配置文件_09


先关闭该服务 ,查看端口情况

ansible检测端口是否存在 ansible 指定端口_ansible检测端口是否存在_10


ansible检测端口是否存在 ansible 指定端口_配置文件_11

-t 标签名 挑取一个标签来执行,这里执行服务启动,启动成功端口开启监听

ansible检测端口是否存在 ansible 指定端口_配置文件_12

测试多个标签
先卸载安装包

ansible检测端口是否存在 ansible 指定端口_配置文件_13

ansible检测端口是否存在 ansible 指定端口_ansible检测端口是否存在_14

挑取两个标签执行

ansible检测端口是否存在 ansible 指定端口_变量名_15

多个动作可指定同一个标签执行

–list-tags 查看playbook标签信息

ansible检测端口是否存在 ansible 指定端口_变量名_16

变量的使用

ansible检测端口是否存在 ansible 指定端口_变量名_17

setup为一个模块 可收集机器的系统状态信息

ansible检测端口是否存在 ansible 指定端口_ansible检测端口是否存在_18


更改一台机器的主机名

ansible检测端口是否存在 ansible 指定端口_ansible检测端口是否存在_19

-a支持过滤 专有写法

ansible检测端口是否存在 ansible 指定端口_ansible检测端口是否存在_20

新写一个playbook 安装包名为一个变量
{{ 变量 }} 左右两边可空可不空

ansible检测端口是否存在 ansible 指定端口_ansible检测端口是否存在_21

-e参数给变量赋值

ansible检测端口是否存在 ansible 指定端口_命令行_22

多个标签的写法

ansible检测端口是否存在 ansible 指定端口_配置文件_23


ansible检测端口是否存在 ansible 指定端口_配置文件_24

卸掉包

ansible检测端口是否存在 ansible 指定端口_命令行_25

在脚本里直接定义变量,而不是在命令行指定变量名
vars:
变量名:变量值

ansible检测端口是否存在 ansible 指定端口_配置文件_26

直接执行该脚本即可

ansible检测端口是否存在 ansible 指定端口_命令行_27

变量使用在hosts文件中

ansible检测端口是否存在 ansible 指定端口_命令行_28


ansible检测端口是否存在 ansible 指定端口_ansible检测端口是否存在_29

查看主机名已更改成应用的变量

ansible检测端口是否存在 ansible 指定端口_命令行_30

对一个分组设置一个公共的变量

ansible检测端口是否存在 ansible 指定端口_ansible检测端口是否存在_31

ansible检测端口是否存在 ansible 指定端口_变量名_32


执行脚本查看效果

ansible检测端口是否存在 ansible 指定端口_ansible检测端口是否存在_33


ansible检测端口是否存在 ansible 指定端口_ansible检测端口是否存在_34

若在脚本中已指定变量名 在命令行继续指定变量名 则按命令行中使用的生效

ansible检测端口是否存在 ansible 指定端口_ansible检测端口是否存在_35


81 82 优先级高于80

ansible检测端口是否存在 ansible 指定端口_变量名_36

查看系统自带变量

ansible检测端口是否存在 ansible 指定端口_变量名_37

查看特定变量 -a 支持过滤

ansible检测端口是否存在 ansible 指定端口_变量名_38

直接使用系统变量

ansible检测端口是否存在 ansible 指定端口_配置文件_39

收集主机系统信息

ansible检测端口是否存在 ansible 指定端口_变量名_40

ansible检测端口是否存在 ansible 指定端口_命令行_41

用一个文件存放变量,格式如下

ansible检测端口是否存在 ansible 指定端口_命令行_42

调用变量

ansible检测端口是否存在 ansible 指定端口_命令行_43

ansible检测端口是否存在 ansible 指定端口_命令行_44