playbook

playbook

list  together  nested with_items

Templates 模版

jinja模版架构,通过模版可以实现向模版文件传参(python转义)把占位符参数传到配置文件中去。

生成一个目标文本文件,传递变量到需要配置文件当中(web开发)。

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

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

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

httpd

nginx的

cp httpd.conf /opt/http.conf.j2

vim httpd.conf.j2

42行 Listen {{http_port}}

95行 ServerName  {{server_name}}

119行 DocumentRoot {{root_dir}}

vim /etc/ansible/hosts

[webservers]

20.0.0.180 http_port=20.0.0.180:80 server_name=www.guoqi.com:80  root_dir=/etc/httpd/htdocs

[dbservers]

20.0.0.181 http_port=20.0.0.181:80 server_name=www.wdf.com:80  root_dir=/etc/httpd/htdocs

vim httpd.yml

- hosts: all

  remote_user: root

  vars:

      -  package:  httpd

      -  service :   httpd

tasks:

   -  name:  install  httpd

      yum:  name={{package}}

   -  name:  install  configure  file

      template:  src=/opt/httpd.conf.j2  dest=/etc/httpd/conf/httpd.conf

#使用template的模版

    notify:

        -  restart  httpd

   -  name  create  root_dir

      file:

        path:  /etc/httpd/hdocs

        state:  directory

   -  name:  start  httpd

      service:  name={{service}}  enabled=true  state=started

handlers:

    -  name:  restart  httpd

       service:  name={{service}}  state=restarted

执行:ansible-playbook httpd.yml

playbook_第1张图片

playbook_第2张图片

ansible  -a  192.168.233.20 'cat /etc/httpd/conf/httpd.conf'

到test2查看

vim /etc/httpd/conf/httpd.conf

查看42行:Listen 192.168.233.20:80

查看95行:ServerName  www.guoqi.com:80

查看119行: DocumentRoot  "/etc/httpd/htdocs"

vim /etc/ansible/hosts

yum -y install nginx

playbook_第3张图片

题:

vim nginx.html

server {

    listen        80;

    #listen   8080

    server_name   ;

    server_name改为www.guoqi.com

    root    /usr/share/nginx/html;   

    #root 改为/opt/nginx/html

}

.j2文件占位 

template传参

host文件定义

解答:vim nginx.conf

cp nginx.conf /opt/nginx.conf.j2

cd /opt/

vim nginx.conf.j2

server {

    listen  {{port}};

    server_name  {{server_name}};

    root                 {{root_dir}};

}

playbook_第4张图片

vim /etc/ansible/hosts

playbook_第5张图片

tages模块:

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

-name:

tages:

  debug

--tags debug

--statr-at-task='wdf'

任务标签的种类:

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

never:即使运行了指定标签,该任务也不会执行

debug:调试任务

setup:收集主机信息

自定义标签

per_tasks:运行指定标签之前的任务

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

Roles模块

角色:

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

可以根据层次的结构,自动装载变量文件,task任务,以及handlers等等

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

roles:

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

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

  templates  存放j2的模版文件

  tasks 包含任务的目录(子目录)

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

  handlers  包含处理器的目录

  -----------main.yml

  vars  存放变量的目录

  -----------main.yml

  defaults  包含默认变量的目录

  -----------maim.yml

  meta  包含元信息的目录

  -----------main.yml

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

如何来实现?

三个服务(创建三个角色)

httpd

mysql

php

分别在每个角色里面创建目录

touch {}

playbook_第6张图片

mysql

pkg:

    mariadb

    mariadb-server

svc:  mariadb

- name:  install php

  yum:  name={{pkg}}

- name:  start  php=fpm

  service:

pkg:

svc:

vim site.yml

分配要运行的主机、用户

运行

每个角色都要有自己的目录

技术能力,学习能力,解决问题的能力,抗压能力

你可能感兴趣的:(服务器,linux)