如果服务器数量很多,配置信息比较多,可利用Ansible Playbook 编写剧本,从而以更加简单得方式实现任务处理得自动化与流程化

  playbook是由一个或多个模块组成,使用不同得模块完成一件事情

  playbook通过yaml语法识别描述的状态文件,扩展名是yaml

PlayBooks组件包括以下内容

  target:定义PlayBook的远程主机

  variable:定义PlayBook使用的变量

  task:定义远程主机上执行的任务列表

  habdler:定义task执行完成后需要调用的任务,例如配置文件被改动,则启动handler任务重启相关联的服务

target常用参数:

  hosts: 远程主机组

  user:执行该任务的用户

  sudo:设置为yes,使用root权限

  sudo_user:指定sudo普通用户

  connection:默认基于SSH连接客户端

  gather_facks:获取远程主机的facts基础信息

variable:常用参数:

  vars:格式、变量名:变量值

  vars_files:指定变量文件

  vars_prompt:用户交互模式自定义变量

  setup:模块取远程主机值

task常用参数:

  name:任务名称(屏幕展示信息)

  action:定义执行的动作

  copy:复制本地文件到远程主机

  template:复制本地文件到远程主机,可以引用本地变量

  service:定义服务状态

1、YAML 三板斧

  • 缩进

    YAML使用一个固定的缩进风格表示层级结构,每个缩进由两个空格组成,不能使用TAB(默认,因为一个tab=4空格) 

    解决方案:

   [root@m01 ~]# vim .vimrc

    set tabstop=2

保存并推出,使用tab就是缩进2个空格

  • 冒号

    以冒号结尾的除外,其他所有冒号后面所有必须有空格

  • 短横线

    表示列表项,使用一个短横杠加一个空格

    多项使用同样的缩进级别的同一列表

2、Playbook的核心元素

  hosts:主机清单

  tasks:任务

  vars:变量

  handlers:特定条件触发的任务

  template:包含了模块语法的文本文件

 ansible playbook 安装apache示例

[root@m01 ~]# cd /etc/ansible/
[root@m01 ansible]# mkdir ansible_playbook

  为了统一管理所有ansible脚本都放到/etc/ansible/ansible_playbook

[root@m01 etc]# vim /etc/ansible/hosts    #检查客户端配置

1、准备apache的配置文件

[root@m01 ansible_playbook]# mkdir -p /etc/ansible/ansible_playbook/conf

  从其他项目中复制http.conf到 /etc/ansible/ansible_playbook/conf  下

修改配置文件 :端口

[root@m01 conf]# sed -i 's#Listen 80#Listen 8080#g' httpd.conf 

  

编写apache安装启动剧本:

[root@m01 ansible_playbook]# cd /etc/ansible/ansible_playbook

[root@m01 ansible_playbook]# vim apache.yaml

 

- hosts: web                                          #主机组
  tasks:                                            # 任务
    - name: Install Httpd                                  #运行名称
      yum: name=httpd state=installed
    - name: Configure Http.conf
      copy: src=./conf/httpd.conf dest=/etc/httpd/conf/httpd.conf
      notify: Restart Http Service                            #监控http.conf有无发生改变,如果变化,就触发 Restart Http Service
    - name: Start Http Service
      service: name=httpd state=started enabled=yes
  handlers:                                          #触发任务
    - name: Restart Http Service
      service: name=httpd state=restarted                        #重启

  保存并推出:

命令格式:

ansible-playbook [option] filename

ansible-playbook 常用命令:

-C        #模拟运行

--list-hosts      #列出剧本主机清单

--list-tags        #列出剧本标记

--list-tasks      #列出剧本任务

--syntax-check    #检测语法

[root@m01 ansible_playbook]# ansible-playbook --syntax-check apache.yaml     #检查语法

[root@m01 ansible_playbook]# ansible-playbook --list-hosts apache.yaml         #主机清单

[root@m01 ansible_playbook]# ansible-playbook --list-tasks apache.yaml         #任务

[root@m01 ansible_playbook]# ansible-playbook -C apache.yaml           #模拟运行剧本  

[root@m01 ansible_playbook]# ansible-playbook -C apache.yaml

PLAY [web] ************************************************************************************

TASK [Gathering Facts] ************************************************************************
ok: [192.168.1.67]

TASK [Install Httpd] **************************************************************************
changed: [192.168.1.67]

TASK [Start Http Service] *********************************************************************
changed: [192.168.1.67]

PLAY RECAP ************************************************************************************
192.168.1.67               : ok=3    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

[root@m01 ansible_playbook]# ansible-playbook apache.yaml     #运行剧本

[root@m01 ansible_playbook]# ansible-playbook  apache.yaml

PLAY [web] ************************************************************************************

TASK [Gathering Facts] ************************************************************************
ok: [192.168.1.67]

TASK [Install Httpd] **************************************************************************
changed: [192.168.1.67]

TASK [Start Http Service] *********************************************************************
changed: [192.168.1.67]

PLAY RECAP ************************************************************************************
192.168.1.67               : ok=3    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

  

posted on 2020-11-20 16:47  草根920  阅读(139)  评论(0编辑  收藏  举报