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

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 

相关推荐

  1. Ansible——template模块

    2023-12-22 10:52:05       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-22 10:52:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-22 10:52:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-22 10:52:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-22 10:52:05       20 阅读

热门阅读

  1. Python基础if...else条件判断

    2023-12-22 10:52:05       40 阅读
  2. SQL---数据抽样

    2023-12-22 10:52:05       45 阅读
  3. Linux 脚本监控cpu输出到日志,每秒执行1次

    2023-12-22 10:52:05       39 阅读
  4. 2312llvm,05后端下

    2023-12-22 10:52:05       39 阅读
  5. IIC及OLED实验

    2023-12-22 10:52:05       32 阅读
  6. 通过 jekyll 构建 github pages 博客实战笔记

    2023-12-22 10:52:05       44 阅读
  7. MySQL数据库备份数据深入了解!

    2023-12-22 10:52:05       39 阅读
  8. form-data、x-www-form-urlencoded、raw 和 binary

    2023-12-22 10:52:05       25 阅读
  9. 如何在Go中制作HTTP服务器

    2023-12-22 10:52:05       47 阅读