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
相关推荐
有毒的教程3 天前
Ansible批量操作自动化完整教程:批量部署服务、配置同步、软件更新实战
运维·自动化·ansible
Hy行者勇哥8 天前
用Cursor智能编写Ansible/Terraform脚本,打通CI/CD链路
ci/cd·ansible·terraform
芷栀夏10 天前
飞牛NAS怎么部署Immich?家庭照片自动备份与远程访问教程
服务器·nginx·ansible
悠然南风21 天前
Ansible常见模块总结及LDAP Role 编写与调试
ansible
祺风挽楠1 个月前
ansible编辑
网络·ansible
芳心粽伙饭1 个月前
Ansible课后作业
ansible
烁3471 个月前
Ansible初识
ansible
烁3471 个月前
Ansible安装部署调试
ansible
烁3471 个月前
Ansible命令
ansible
小义_1 个月前
【Ansible】(三)基础配置与连接设置
云原生·ansible