Ansible 使用playbook文件运行

 ansible playbooks 是使用ansible简单的配置管理部署系统的基础,使用YAML语法格式的配置文件。每一个playbook中包含一系列的任务。使用ansible playbook可以更方便的管理、维护多态主机。

1、yaml语法

    yaml是”YAML Ain't a Markup Language”的缩写,即不是一种标记性语言,它是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高并且容易被人类阅读,容易和脚本语言交互,用来表达资料序列的编程语言。

yaml编写playbook配置文件的规范:

(1)首行以”---”(3个减号)开始,且需顶行首写。

(2)使用#号注释代码。

(3)缩进必须是统一的,不能空格和tab混用

(4)缩进的级别也必须是一致的,同样的缩进代表同样的级别,程序判别配置的级别是通过缩进结合换行来实现的。

(5)YAML文件内容和Linux系统大小写判断方式保持一致,是区别大小写的,k/v的值均需大小写敏感。

(6)k/v的值可同行写也可换行写。同行使用:分隔,换行写需要以”-”分隔。

(7)一个完整的代码块功能需最少元素需包括 name: task。

(8)一个name只能包括一个task

设置设置在.yml文件中Tab键为两个空格

[ansible@server1 ~]$ vim .vimrc
[ansible@server1 ~]$ cat .vimrc 
autocmd filetype yaml setlocal ai ts=2 sw=2 et

2、编写执行ansible playbook

(1)Playbook的主要组成元素

    Hosts: 运行指定任务的目标主机,可以是主机,也可以是主机组,支持正则表达式。

    Tasks: 任务列表,一个playbook配置文件中只能有一个tasks,一个tasks下可以编排多个任务。

    Varniables: 变量

   Templates: 模板,使用templates可以针对不同的主机定制不同参数。

   Handlers: 由特定条件触发的任务,监控资源改变时才会触发,需要配合notify使用。

   Roles: Playbook的按固定目录结构组成

(2)执行playbook

    playbook执行时使用”ansible-playbook”命令后跟写好的yaml格式的playbook文件即可,

但在执行前最好检查下playbook文件语法是否正确 -C

(3)playbook在执行时还可以跟其他的一些选项:

    1)指定执行的主机或主机组:

      playbook在执行时默认会在据配置文件在”hosts”中定义的主机及主机组上去执行,如果不想在配置文件中指定的主机上去执行,可以使用”--limit”指定主机。

2)指定执行playbook的用户

      playbook在执行时默认会使用配置文件中”remote_user”指定的用户去执行,如果想使用别的用户去执行,可以使用参数”--remote-user”指定用户去执行。如果使用参数指定的用户没有做ssh安全认证,则可以使用参数”--ask-sudo-pass”在执行命令时根据提示输入密码即可正常执行。

3)执行playbook时传入变量

   执行playbook时,如果在”hosts”配置文件中及playbook中定义了变量并在执行时参入变量,则优先使用执行时用参数传入的变量,其次使用playbook中的变量,最后使用”inventory”文件中定义的变量。

   在执行playbook时可以使用”-e”选项后跟”key1=value1,key2=value2”的方式传入变量。

)其他可使用的选项

          -i(--inventory=PATH):指定inventory文件,默认文件是/etc/ansible/hosts

         -v(--verbose):显示详细的输出,也可使用-vvvv显示精确到每分钟的输出

         -f(--forks=NUM):指定并发执行的任务数,默认为5,可根据服务器的性能进行调节

         -C(--check):检测模式,playbook中定义的所有任务将在每台远程主机上进行检测,但不执行。


使用ansible playbook安装启动httpd服务

编写playbook.yml文件

---
- hosts: db
  tasks:
    - name: install httpd
      yum:
        name: httpd
        state: present

    - name: copy index.html
      copy:
        src: files/index.html
        dest: /var/www/html/index.html

    - name: configure httpd
      copy:
        src: files/httpd.conf
        dest: /etc/httpd/conf/httpd.conf
        owner: root
        group: root
        mode: 644
      notify: restart httpd

    - name: start httpd  and firewalld
      service:
        name: "{{ item }}"
        state: started
      loop:
        - httpd
        - firewalld

    - name: configure firewalld
      firewalld:
        service: httpd
        permanent: yes
        immediate: yes
        state: enabled

  handlers:
    - name: restart httpd
      service:
        name: httpd
        state: restarted

复制httpd配置文件模板

Ansible 使用playbook文件运行_第1张图片

写入发布页面

检测文件 并 运行

 

Ansible 使用playbook文件运行_第2张图片

server3服务开启

Ansible 使用playbook文件运行_第3张图片

80端口开启

Ansible 使用playbook文件运行_第4张图片

修改files中的配置文件模板端口

重新运行后,server3 端口变为8080

 

Ansible 使用playbook文件运行_第5张图片

你可能感兴趣的:(Linux企业项目)