Ansileansible收藏

Ansible Playbook 、 roles

2022-01-27  本文已影响0人  偷油考拉

playbooks

Ansible Playbooks提供了一个可重复、可重用、简单易用的配置管理和多机部署系统,非常适合部署复杂的应用程序。如果需要多次使用Ansible执行任务,请编写剧本并将其置于源代码控制之下。然后,您可以使用playbook推送新配置文件或检查远程系统的配置。ansible-examples repository有很多范例。

---
- name: Update web servers
  hosts: webservers
  remote_user: root

  tasks:
  - name: Ensure apache is at the latest version
    ansible.builtin.yum:
      name: httpd
      state: latest
  - name: Write the apache config file
    ansible.builtin.template:
      src: /srv/httpd.j2
      dest: /etc/httpd.conf

- name: Update db servers
  hosts: databases
  remote_user: root

  tasks:
  - name: Ensure postgresql is at the latest version
    ansible.builtin.yum:
      name: postgresql
      state: latest
  - name: Ensure that postgresql is started
    ansible.builtin.service:
      name: postgresql
      state: started

ansible-playbook

ansible-playbook playbook.yml -f 10

roles

一个 Ansible role 定义了八个子目录。每个role至少包含一个,不用的目录可以忽视。比如:

# playbooks
site.yml
webservers.yml
fooservers.yml
roles/
    common/
        tasks/
        handlers/
        library/
        files/
        templates/
        vars/
        defaults/
        meta/
    webservers/
        tasks/
        defaults/
        meta/

默认,ansible 会查找每个目录下的 main.yml 文件。

---
- hosts: webservers
  roles:
    - common
    - webservers
---
- hosts: webservers
  roles:
    - role: '/path/to/my/roles/common'
---
- hosts: webservers
  roles:
    - common
    - role: foo_app_instance
      vars:
        dir: '/opt/a'
        app_port: 5000
      tags: typeA
    - role: foo_app_instance
      vars:
        dir: '/opt/b'
        app_port: 5001
      tags: typeB

范例

修改云服务器上的 resolv.conf 文件,添加 domain 配置。

1) 当前目录结构
  1. 配置文件 .ansible.cfg
  2. inventory 文件 hosts
  3. playbook resov.yml
  4. roles目录,以及 role 01_rha-dr-resolv
  5. 01_rha-dr-resolv 下存在 tasks/ 和 files/ 目录,执行tasks/main.yml,将 files/目录下的 resov.conf推送到远程服务器
[sysadmin@VM-201-5-centos ~]$ tree ./
./
|-- hosts
|-- resolv.yml
`-- roles
    `-- 01_rha-dr-resolv
        |-- files
        |   `-- resolv.conf
        `-- tasks
            `-- main.yml

4 directories, 4 files
[new]
10.99.201.11
---
- hosts: new
  become: yes
  roles:
    - 01_rha-dr-resolv
---
- name: resolv.conf config
  copy:
    src: resolv.conf
    dest: /etc/resolv.conf
    owner: root
    group: root
    mode: '0644'
; created by ansible
domain rha-dr.com
search rha-dr.com
;created by ansible

; generated by /usr/sbin/dhclient-script
nameserver 183.60.83.19
nameserver 183.60.82.98
2) 执行role

-u 远程账户
-k 远程账户密码
-K 远程账户sudo密码

[sysadmin@VM-201-5-centos ~]$ ansible-playbook resolv.yml -u admin -k -K
SSH password: 
BECOME password[defaults to SSH password]: 

PLAY [new] *******************************************************************************************************************************************************************************************************************************************************************

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

TASK [01_rha-dr-resolv : resolv.conf config] *********************************************************************************************************************************************************************************************************************************
changed: [10.99.201.11]

PLAY RECAP *******************************************************************************************************************************************************************************************************************************************************************
10.99.201.11               : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

上一篇下一篇

猜你喜欢

热点阅读