ansible的tags标签

1、tags模块

可以给任务定义标签,可以根据标签来运行指定的任务

2、标签的类型

bash 复制代码
always:设定了标签名为always,除非指定跳过这个标签,否则该任务将始终会运行,即使指定了标签还会运行

never:始终不运行的任务,指定标签名never可以运行

debug:用于调试

setup:收集主机的信息

标签名也可以自定义:tags
bash 复制代码
vim test1.yaml

- hosts: 192.168.230.20
  gather_facts: false
  tasks:
    - name: debug-test1
      debug: 
        msg: "cow"
      tags:
        - debug
        
    - name: always-test1
      debug:
        msg: "ALWAYS-RUN"
      tags:
        - always
        
    - name: setup-test1
      debug:
        msg: "SETUP-1"
      tags: 
        - setup
        
    - name: never-test1
      debug: 
        msg: "Never-run"
      tags:
        - never
 
#不加标签运行,四个任务都会执行
ansible-playbook test1.yaml

#从setup标签开始运行,会运行setup和always的任务内容 
ansible-playbook test1.yaml --tags=setup

#运行never标签,always的标签也会运行
ansible-playbook test1.yaml --tags=never

#跳过always不执行
ansible-playbook test1.yaml --skip-tags=always

#运行多个标签
ansible-playbook test1.yaml --tags="debug","setup"

3、自定义标签

bash 复制代码
- hosts: 192.168.230.20
  remote_user: root
  tasks:
    - name: fuzhiwenjian
      copy: src=/etc/hosts dest=/opt/hosts
      tags:
        - zlm
    - name: touch file
      file: path=/opt/test1.txt state=touch
      tags:
        - hpc

#运行
ansible-playbook test2.yaml --tags=hpc  

4、模版

对应用的配置文件初始化

templates模版,Jinja组件,把编译过的模版文件传送给目标文件

bash 复制代码
cd /etc/httpd/conf
cp httpd.conf /opt/httpd.conf.j2
cd /opt

vim httpd.conf.j2
42行 Listen {{http_port}}
95行取消注释 SeverName {{server_name}}
119行 DocumentRoot "{{root_dir}}"

vim /etc/ansible/hosts
192.168.230.20 http_port=192.168.230.20:80 server_name=www.xy.com:80 root_dir=/etc/httpd/htdocs

vim test3.yaml

- hosts: 192.168.230.20
  gather_facts: false
  remote_user: root
  vars:
    - pg: httpd
    - sv: httpd
  tasks:
    - name: install httpd
      yum: name={{pg}}
    - name: editon conf
      template: src=/opt/httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf
      notify: 
        - restart httpd
   handlers:
     - name: restart httpd
       service: name={{sv}} state=restarted

#运行
ansible-playbook test3.yaml


作业:nginx通过传参的方式,端口改成8080,servername:www.xy.com

5、roles模块

ansible为了层次化、结构化的组织playbook,使用roles(角色),通过层次化自动装载变量、任务和处理器等

roles把变量、任务和模块的文件单独放置在各个不同的文件中,通过roles一键编排

bash 复制代码
cd /etc//ansible

mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta} -p
mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta} -p
mkdir /etc/ansible/roles/php/{files,templates,tasks,handlers,vars,defaults,meta} -p

yum -y install tree
tree

roles:
├── httpd              角色名称 自定义
│   │   ├── defaults   存放配置文件的目录,可以不写
│   │   ├── files      存放copy模块或者script
│   │   ├── handlers   存放处理器文件的目录
│   │   ├── meta       保存角色元信息的文件
│   │   ├── tasks      保存任务的文件
│   │   ├── templates  保存模版的文件
│   │   └── vars       保存变量的文件
就是把原来写在一个yaml的配置,分开到不同的目录,保存在一个名字的yaml里面,执行的时候调用不同目录的同一个yaml文件
文件名:main.yml

cd httpd
cd tasks
vim main.yml
- name: install httpd
  yum: name={{pkg}}
- name: start apach
  service: name={{svc}} enabled=true state=started
  
cd vars
vim main.yaml
pkg:httpd
svc:httpd

cd /etc/ansible
vim site.yaml
- hosts: 192.168.230.30
  remote_user: root
  roles:
    - httpd
    
#运行
ansible-playbook site.yaml
相关推荐
yuxb736 小时前
Ansible 基础到实操笔记
linux·笔记·ansible
IT成长日记1 天前
【自动化运维神器Ansible】playbook命令行变量定义全流程解析
运维·自动化·ansible·变量·命令行·playbook
vivo互联网技术2 天前
vivo Pulsar 万亿级消息处理实践(4)-Ansible运维部署
大数据·ansible·自动化运维·pulsar·消息处理·分布式消息中间件
朱小弟cs62 天前
Orange的运维学习日记--41.Ansible基础入门
linux·运维·学习·ci/cd·自动化·ansible·devops
IT成长日记2 天前
【自动化运维神器Ansible】playbook案例解析:Tags组件实现任务选择性执行
运维·自动化·ansible·playbook·tags
IT成长日记2 天前
【自动化运维神器Ansible】playbook实践示例:HTTPD安装与卸载全流程解析
运维·自动化·ansible·playbook·httpd·案例解析
天翼云开发者社区7 天前
Ansible部署Node_exporter
ansible·应用自动化运维
ZZZKKKRTSAE8 天前
RHCE认证题解
linux·运维·服务器·ansible·rhce·rhel9·红帽
求知若渴,虚心若愚。12 天前
ansible.cfg 配置文件生成
java·服务器·ansible