ansible playbook进阶(二)

playbook编写(一)
ansible理论知识

handles和notify

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

ansible playbook进阶(二)

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

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

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

ansible playbook进阶(二)

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

ansible playbook进阶(二)

使用handlers触发器
ansible playbook进阶(二)

再次执行剧本,查看结果

ansible playbook进阶(二)

handlers可定义多个

ansible playbook进阶(二)
handlers具体用法

tags

ansible playbook进阶(二)

通过标签执行特定task

ansible playbook进阶(二)
先关闭该服务 ,查看端口情况

ansible playbook进阶(二)
ansible playbook进阶(二)

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

ansible playbook进阶(二)

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

ansible playbook进阶(二)

ansible playbook进阶(二)

挑取两个标签执行

ansible playbook进阶(二)

多个动作可指定同一个标签执行
–list-tags 查看playbook标签信息
ansible playbook进阶(二)

变量的使用

ansible playbook进阶(二)

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

ansible playbook进阶(二)
更改一台机器的主机名

ansible playbook进阶(二)

-a支持过滤 专有写法

ansible playbook进阶(二)

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

ansible playbook进阶(二)

-e参数给变量赋值

ansible playbook进阶(二)

多个标签的写法

ansible playbook进阶(二)
ansible playbook进阶(二)

卸掉包
ansible playbook进阶(二)

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

ansible playbook进阶(二)

直接执行该脚本即可
ansible playbook进阶(二)

变量使用在hosts文件中

ansible playbook进阶(二)
ansible playbook进阶(二)

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

ansible playbook进阶(二)

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

ansible playbook进阶(二)

ansible playbook进阶(二)
执行脚本查看效果

ansible playbook进阶(二)
ansible playbook进阶(二)

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

ansible playbook进阶(二)
81 82 优先级高于80
ansible playbook进阶(二)

查看系统自带变量
ansible playbook进阶(二)

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

ansible playbook进阶(二)

直接使用系统变量

ansible playbook进阶(二)

收集主机系统信息

ansible playbook进阶(二)

ansible playbook进阶(二)

用一个文件存放变量,格式如下
ansible playbook进阶(二)

调用变量

ansible playbook进阶(二)

ansible playbook进阶(二)