Ansible的脚本-----playbook剧本【下】

目录

[实战演练六:tags 模块](#实战演练六:tags 模块)

[实战演练七:Templates 模块](#实战演练七:Templates 模块)


实战演练六:tags 模块

可以在一个playbook中为某个或某些任务定义"标签",在执行此playbook时通过ansible-playbook命令使用--tags选项能实现仅运行指定的tasks。
playbook还提供了一个特殊的tags为always。作用就是当使用always作为tags的task时,无论执行哪一个tags时,定义有always的tags都会执行。

复制代码
vim play5.yaml
- name: five play
  remote_user: root
  hosts: dbservers
  gather_facts: true
  tasks:
  - name: copy file
    copy: src=/etc/hosts dest=/opt/
    tags:
    - test

  - name: touch file
    file: path=/opt/myhosts state=touch
    tags:
    - only


ansible-playbook play5.yaml --tags="test"   #指定标签,只运行该标签下的任务



被控制节点查看opt目录下是否有hosts文件

复制代码
vim play5.yaml
- name: five play
  remote_user: root
  hosts: dbservers
  gather_facts: true
  tasks:
  - name: copy file
    copy: src=/etc/hosts dest=/opt/
    tags:
    - test

  - name: touch file
    file: path=/opt/myhosts state=touch
    tags:
    - only
    - always

ansible-playbook play5.yaml --tags="test"     #当使用always作为tags的task时,无论执行哪一个tags时,定义有always的tags都会执行。

被控制节点查看

实战演练七:Templates 模块

Jinja是基于Python的模板引擎。Template类是Jinja的一个重要组件,可以看作是一个编译过的模板文件,用来产生目标文本,传递Python的变量给模板去替换模板中的标记。

复制代码
cp /opt/httpd.conf ./httpd.conf.j2   先准备一个以 .j2 为后缀的 template 模板文件,设置引用的变量

vim httpd.conf.j2 
Listen {{server_ip}}:{{http_port}}   #42行
ServerName {{host_name}}:{{http_port}}   #95行
      
vim /etc/ansible/hosts
[webservers]
192.168.9.113 server_ip=192.168.9.113 http_port=8080 host_name=www.xy102.com
192.168.9.111 server_ip=192.168.9.111 http_port=8081 host_name=www.xy103.com
复制代码
vim play1.yaml
- name: first play
  gather_facts: false
  hosts: webservers
  remote_user: root
  tasks:
  - name: disable firewalld
    service: name=firewalld state=stopped enabled=no
  - name: disable selinux
    command: 'setenforce 0'
    ignore_errors: true
  - name: mount cdrom
    mount: src=/dev/sr0 path=/mnt fstype=iso9660 state=mounted
  - name: install httpd
    yum: name=httpd state=latest
  - name: copy config template file
    template: src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf
    notify: "reload httpd"
  - name: start httpd
    service: name=httpd state=started enabled=yes
  handlers:
  - name: reload httpd
    service: name=httpd state=reloaded

ansible-playbook play1.yaml


两个被控制节点查看42、95行是否修改成功

相关推荐
悠悠121382 天前
从0到1掌握Ansible:让自动化运维不再是梦想
运维·自动化·ansible
卧室小白3 天前
ansible自动化
ansible
yuezhilangniao5 天前
Ansible基础 ansible入门 针对不同python3版本 - 含 Terraform 入门联动
运维·自动化·ansible
Koma_zhe6 天前
【Ansible开源自动化运维工具】别再手动装监控了,Ansible能让上百台机器同时搞定Node Exporter(1)
运维·开源·ansible
.柒宇.9 天前
RedHat10-Ansible部署Docker操作
docker·eureka·ansible
道清茗16 天前
【RH294知识点汇总】第 7 章 《 使用角色和 Ansible 内容集合简化 Playbook 》常见问题
ansible
何中应17 天前
Ansible安装&使用
运维·自动化·ansible·运维开发·自动化运维
王九思18 天前
Ansible 自动化运维基础—模板
运维·自动化·ansible
道清茗19 天前
【RH294知识点汇总】第 7 章 《 使用角色和 Ansible 内容集合简化 Playbook 》
java·前端·ansible
切糕师学AI19 天前
深入解析 Ansible:从入门到实践
ansible