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
相关推荐
在野靡生.18 小时前
Ansible(4)—— Playbook
linux·运维·ansible
rocksun1 天前
如何使用Semaphore在Ansible上添加GUI
ansible
千航@abc4 天前
深度剖析 ansible:从部署基础到模块运用及剧本编写
运维·centos·ansible
一只栖枝4 天前
RHCA核心课程技术解析3:Ansible 自动化平台深度实践指南
linux·服务器·自动化·ansible·运维工程师·红帽认证·rhce认证
chairon5 天前
Ansible:playbook实战案例
运维·服务器·网络·ansible
leo·Thomas8 天前
什么是 Ansible Playbook?
ansible·playbook
luojiaao9 天前
【CICD】Ansible知识库
ansible
hhzz10 天前
从零开始使用 Ansible 自动化部署 SpringBoot Web 应用(含 MySQL、Redis、Vue、Nginx)
前端·自动化·ansible
zxnbmk15 天前
ansible速查手册
linux·服务器·ansible
book012115 天前
Ansible 自动化运维
运维·自动化·ansible