Ansible中的playbook

目录

一、playbook简介

二、playbook的语法

三、playbook的核心组件

四、playbook的执行命令

五、vim 设定技巧

六、基本示例


一、playbook简介

1、playbook与ad-hoc相比,是一种完全不同的运用。
2、playbook是一种简单的配置管理系统与多机器部署系统的基础,且非常适合于复杂应用的部署。

3、playbook是一种简单的配置管理系统与多机器部署系统的基础,且非常适合于复杂应用的部署。
4、使用playbook可以方便的重用这些代码,可以移植到不同的机器上面,playbook才是ansible真正强大之处。

二、playbook的语法

playbook由YMAL语言编写:

 YAML文件的格式:
1、文件的第一行应该以“---"三个连字符开始,表明YMAL文件的开始
2、在同一行中,#之后的内容表示注释,类似于shell,python
3、YMAL中的列表元素以”-”开头然后紧跟着一个空格,同一个列表中的元素应该保持相同的缩进。

4、一个字典是由一个简单的 键: 值 的形式组成(这个冒号后面必须是一个空格)

5、字典也可以使用缩进形式来表示

特点:

可读性好

和脚本语言交互性号

易于实现

适用程序执行流梳理方式

可扩展性强 

语法简介: 

缩进严格

大小写敏感

key/value可以多行书写也可一行书写,一行书写用,隔开

value可以是个字符串,也可是list

一个play需要包括name和tasks

name 是描述

tasks 是动作

一个name只能包含一个task

扩展名称yml或者yaml 

三、playbook的核心组件

name 可选,建议使用,多用于说明
hosts 受控主机列表
tasks 任务,用于选择执行部分代码

1、主机与用户

---
- hosts: server2  //指定主机组,可以是一个或多个组,用逗号分隔
  remote_user: root  //指定远程主机执行的用户名
  become: yes  //切换用户运行
  become_user: mysql  //指定sudo用户为mysql

 2、tasks列表
(1)play的主体部分是task列表,task列表中的各任务按次序逐个在hosts中指定的主机上执行,即在所有主机上完成第一个任务后再开始第二个任务。如果一个host执行task失败,整个tasks都会回滚。
(2)每一个task必须有一个名称name,这样在运行playbook时,从其输出的任务执行信息中可以很好的辨别出是属于哪一个task的。

四、playbook的执行命令

--check|-C 检测(预演)
--syntax-check 检测语法正确性
--list-hosts 列出hosts
--list-tags 列出tag(标签)
--list-tasks 列出task(任务)
--limit 指定执行主机
-v -vv 显示实现过程
ansible-playbook ftp.yml -C
ansible-playbook ftp.yml --syntax-check
ansible-playbook ftp.yml --list-hosts
ansible-playbook ftp.yml --list-tags
ansible-playbook ftp.yml --list-tasks
ansible-playbook ftp.yml --limit 192.168.67.112

 Ansible中的playbook_第1张图片Ansible中的playbook_第2张图片Ansible中的playbook_第3张图片

五、vim 设定技巧

YAML文件有严格的缩进,为编写方便,设定vim

vim ~/.vimrc

autocmd FileType yaml setlocal ai ts=2 sw=2 et

随着微服务的使用,在linux上使用vim或者vi命令编辑yml文件的时候,会自动缩进,导致文件根本 无法使用。

解决办法
粘贴前先执行如下命令: 再粘贴的时候,里面的内容就不再缩进了,完美解决。

:set paste

六、基本示例

1、编写playbook实现远程主机vsftpd的安装和自启动:

vim ftp.yml

- name: ftp
  hosts: all
  tasks:
    - name: yum
      yum:
        name: vsftpd
        state: present
    - name: replace
      replace:
        path: /etc/vsftpd/vsftpd.conf
        regexp: anonymous_enable=YES
        replace: anonymous_enable=YES
    - name: service
      service:
        name: vsftpd
        state: started
        enabled: yes
    - name: firewalld
      firewalld:
        zone: public
        service: ftp
        state: enabled
        immediate: yes
        permanent: yes

Ansible中的playbook_第4张图片

Ansible中的playbook_第5张图片

2、编写playbook实现远程主机httpd的安装和自启动,虚拟主机等:

 创建vhosts文件

vim  vhosts.conf
cat vhosts.conf


  DocumentRoot "/var/www/html"
  CustomLog logs/default.log combined



  ServerName bbs.westos.org
  DocumentRoot "/var/virtual/westos.org/bbs/html"
  CustomLog logs/bbs.log combined



  ServerName login.westos.org
  DocumentRoot "/var/virtual/westos.org/login/html"
  CustomLog logs/login.log combined



  Require all granted

Ansible中的playbook_第6张图片

vim http.yml

- name: httpd
  hosts: all
  tasks:
    - name: yum
      yum:
        name: httpd
        state: present
    - name: lineinfile
      lineinfile:
        path: /var/www/html/index.html
        line: default
    - name: service
      service:
        name: httpd
        state: started
        enabled: yes
    - name: firewalld
      firewalld:
        zone: public
        service: http
        permanent: yes
        state: enabled
        immediate: yes
    - name: lineinfile
      lineinfile:
        path: /var/virtual/westos.org/bbs/html/index.html
        line: bbs.westos.org
        create: yes
    - name: lineinfile
      lineinfile:
        path: /var/virtual/westos.org/login/html/index.html
        line: login.westos.org
        create: yes
    - name: copy
      copy:
        src: ./vhosts.conf
        dest: /etc/httpd/conf.d
    - name: service
      service:
        name: httpd
        state: restarted
        enabled: yes

Ansible中的playbook_第7张图片

在访问主机添加解析

访问:查看是否成功

 Ansible中的playbook_第8张图片

Ansible中的playbook_第9张图片

Ansible中的playbook_第10张图片

Ansible中的playbook_第11张图片

你可能感兴趣的:(ansible,ansible)