课时6 实现playbook高级应用和企业级实战

该xx.yml脚本已经执行了,当一个配置文件修改了后,再次执行xx.yml文件,由于服务并不会再次启动
优化:当配置文件一旦发生变化,服务立即重启
课时6 实现playbook高级应用和企业级实战_第1张图片
handlers是一个触发器,跟tasks是同级,监控tasks下的一个动作
notify 通知handlers,用于tasks下的某个任务标记
在notify下可以多个引发触发器
vim httpd.yml

  • hosts: websrvs
    remote_user: root

    tasks:

    • name: install package httpds
      yum: name=httdp
    • name: copy config file
      copy: src=files/httpd.conf dest=/etc/httpd/conf backup=yes
    • name: start service
      service: name=httpd state=started enabled=yes

保存退出
执行:
ansible-playbook -C httpd.yml
ansible-playbook httpd.yml
验证:
ansible websrvs -m shell -a ‘ss -nlt| gerp :80’

修改httpd.conf文件中的端口为8080,再次执行发现,修改了配置文件,还是未生效,端口还是80
优化:当配置文件一旦发生变化,服务立即重启

课时6 实现playbook高级应用和企业级实战_第2张图片
killall -0 就是探测服务是否启动,$?得出非0,就是有问题
vim httpd.yml

  • hosts: websrvs
    remote_user: root

    tasks:

    • name: install package httpds
      yum: name=httdp
    • name: copy config file
      copy: src=files/httpd.conf dest=/etc/httpd/conf backup=yes
      notify: restart service
    • name: start service
      service: name=httpd state=started enabled=yes
      handlers:
      - name: restart service
      service: name=httpd state=restarted
    • name: xxxxx
      xxxxx: xxxxx
      ···················································
      tags 标签使用
      课时6 实现playbook高级应用和企业级实战_第3张图片
      tags就是个其中一个action起个名,标签,添加标签后
      在执行命令时,添加该标签名,则执行该标签的action
      ansible-playbook -t rshttpd,inshttpd httpd.yml
      且多个相同标签,该标签的action都会执行
      –list-tags 列出有标签的标签名
      ·························································
      使用变量:
      课时6 实现playbook高级应用和企业级实战_第4张图片
      setup记录了远程主机的各种状态信息,并被调用变量
      ansible websrvs -m setup -a ‘filter=ansible_hostname’ filter过滤 支持通配符
      在playbook中可以定义/调用变量
      vars:
    • var1: value1

vim app.yml

  • hosts: appsrvs
    remote_user: root

    tasks:

    • name: install package
      yum: name={{ pkname }}
    • name: start service
      service: name={{ pkname }} state=started enabled=yes
      保存退出

3).赋值变量且执行
ansible-playbook -e ‘pkname=vsftpd pkname2=vsftpd’ app.yml 该vsftpd服务端口是21

4).定义变量且引用
课时6 实现playbook高级应用和企业级实战_第5张图片
2) .还可以在ansible中的主机清单定义变量
其中有普通变量,针对于个别主机,优先于公共变量
思考?假如公共组也有这个变量名,再加一台主机,但不定义端口变量,则又如何???是否是启用公共组变量。

vim /etc/ansible/hosts
在这里插入图片描述
课时6 实现playbook高级应用和企业级实战_第6张图片
公共组变量,针对主机组的,引用变量用两个花括号
课时6 实现playbook高级应用和企业级实战_第7张图片
vim hostname.yml

课时6 实现playbook高级应用和企业级实战_第8张图片
临时设置主机名:hostnamectl set-hostname node1
ansible-playbook -C hostname.yml 检查语法
ansible-playbook hostname.yml 执行
ansible websrvs -a ‘hostname’ 验证查看

课时6 实现playbook高级应用和企业级实战_第9张图片
-e 选项,可以替换掉原变量的值

命令行的优先级高于配置文件

你可能感兴趣的:(课时6 实现playbook高级应用和企业级实战)