ansible-playbook的Temlates模块 tags模块 Roles模块

发布时间:2023年12月21日

Temlates模块

jinja模板架构,通过模板可以实现向模板文件传参(python转义)把占位符参数传到配置文件中去,生产一个目标文本文件,传递变量到需要的配置文件当中 (web开发)

nginx.conf.j2 早文件当中配置的是占位符(声明的变量)

/etc/ansible/hosts配置了主机的占位符名称和j2文件的占位符一致(定义参数:占位符的参数声明好)

playbook当中,用template模块来把参数传给目标主机的配置文件

nginx

到nginx.conf里

mv nginx.conf /opt/nginx.conf.j2

vim /etc/ansible/hosts

vim nginx.yml

- hosts: all
  remote_user: root
  vars:
    - package: nginx
    - service: nginx
  tasks:
    - name: install nginx
      yum: name={{package}}


    - name: install configure file
      template: src=/opt/nginx.conf.j2 dest=/etc/nginx/nginx.conf
      notify:
        - restart nginx

    - name: create root_dir
      file:
        path: /opt/nginx/html
        state: directory

    - name: start nginx
      service: name={{service}} enabled=true state=started
  handlers:
    - name: restart nginx
      service: name={{service}} state=restarted

tags模块

标签模块,可以在playbook当中为任务设定标签(tags)我们在运行playbook可以通过指定任务标签,来实现只允许设定的标签任务

任务标签的种类:

always:不管你是否指定了运行标签,任务都会执行

never:是否运行了指定标签该任务也不会执行

debug:调试任务

setup:收集主机信息

自定义标签

per_tasks:指定标签之前的任务

post_tasks:运行指定标签之后的任务

#在目标主机上复制文件/opt/guoqi.txt
#在20.0.0.14 touch guoqu,txt always
#在目标20.0.0.14复制文件/opy/yy.txt
#自定义标签
#第一次运行playbook 不指定标签查看文件生成情况 指定标签为自定义,查看文件生成情况

Roles模块

角色

ansible层次化,结构化的组织playbook ,使用了rolse(角色)

可以根据层次结构,自动装在变量文件,task,以及handiers等等

rolse:分别把变量文件 任务模块以及处理器 放在单独的目录当中,使用relse模块来一键调用这些文件

rolses:

-----web--总目录,角色

files 存放copy和script模块调用的文件

templaes 存放j2的模板文件

tasks包含任务的目录

------main.yml 校色运行的任务

handlers包含处理器的目录

------main.yml

vars:存放变量目录

------main.yml

defaults:包含默认变量的目录

------main.yml

meta:包含元信息的目录

------main.yml

site.yml用来调用所有的配置文件

三个服务分别是三个角色

http

mysql

php

现在/etc/ansible/roles下面创建好php http mysql的目录

分别在php http和mysql目录下建创建

在http php 和mysql目录里先进入tasks

mysql的
- name: install mysql
  yum: name={{pkg}}
- name: start mysql
  service: enabled=true name={{svc}} state=started
php的
- name: install php
  yum: name={{pkg}}
- name: start php-fpm
  service: enabled=true name={{svc}} state=started
http的
- name: install httpd
  yum: name={{pkg}}
- name: start httpd
  service: enabled=true name={{svc}} state=started

在http php 和mysql目录里先进入vars

mysql的
pkg:
  - mariadb
  - mariadb-server
svc: mariadb

httpd的
pkg: httpd
svc: httpd

php的
pkg:
  - php
  - php-fpm
svc: php-fpm

?在/etc/ansible/roles/site.yml

- hosts: 20.0.0.14
  remote_user: root
  roles:
   - httpd
   - mysql
   - php

ansible-playbook site.yml?

文章来源:https://blog.csdn.net/m0_52416577/article/details/135131094
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。