組成結構:
Inventory
Modules
Ad Hoc Comands
Playbooks
Tasks: 任務
variables: 變量
templates: 模板
handlers:
案例1: ansible添加具有sudo權限的用戶
1)生成密碼
* 安裝pip
[admin@node1 ~]$ sudo wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate
* 生成密碼
#sudo pip install passlib
[admin@node1 ~]$ python -c "from passlib.hash import sha512_crypt; import getpass; print sha512_crypt.encrypt(getpass.getpass())"
Password: 輸入密碼
$6$rounds=656000$SiOogbD5vf7soBFY$bDX2gXdy5bpSBBx9KwglMhmYCLGfiZ0G4zCYhOzDOZcIANkcTf1ASuYtwFNH8zy145k7CMolOu7816VGFeihT0
2)編寫playbook
~~~
[admin@node1 ~]$ vim sudo_user.yml
---
- hosts: webserver
user: admin
become: yes
vars:
user: test
password: $6$rounds=656000$SiOogbD5vf7soBFY$bDX2gXdy5bpSBBx9KwglMhmYCLGfiZ0G4zCYhOzDOZcIANkcTf1ASuYtwFNH8zy145k7CMolOu7816VGFeihT0
tasks:
- name: Add user {{ user }}
user: name={{user}} comment="test user" uid=1057
- name: Config /etc/sudoers
lineinfile: dest=/etc/sudoers state=present line='{{item}}'
with_items:
- "{{ user }} ALL=(ALL) NOPASSWD: ALL"
~~~
3、執行過程
~~~
[admin@node1 ~]$ ansible-playbook sudo_user.yml
PLAY [webserver] ***************************************************************************************************************************************************************************************************
TASK [Gathering Facts] *********************************************************************************************************************************************************************************************
ok: [192.168.20.138]
ok: [192.168.20.137]
TASK [Add user test] ***********************************************************************************************************************************************************************************************
ok: [192.168.20.138]
ok: [192.168.20.137]
TASK [Config /etc/sudoers] *****************************************************************************************************************************************************************************************
changed: [192.168.20.138] => (item=test ALL=(ALL) NOPASSWD: ALL)
changed: [192.168.20.137] => (item=test ALL=(ALL) NOPASSWD: ALL)
PLAY RECAP *********************************************************************************************************************************************************************************************************
192.168.20.137 : ok=3 changed=1 unreachable=0 failed=0
192.168.20.138 : ok=3 changed=1 unreachable=0 failed=0
~~~
- 第一章:Ansible基礎入門
- 第二章:Ansible系列手冊
- 第一節:Ansible系列之主機清單
- 第二節:Ansible系列之變量
- 第三節:Ansible系列之YAML
- 第四節:Ansible系列之條件判斷
- 第五節:Ansible系列之循環
- 第六節: Ansible系列之tags
- 第七節:Ansible系列之Jinja2
- 第三章:Ansible系列之模塊
- 第一節:user模塊
- 第二節:group模塊
- 第三節:cron模塊
- 第四節:copy模塊
- 第五節: file模塊
- 第六節:yum模塊
- 第七節:service模塊
- 第八節:shell模塊
- 第九節:script模塊
- 第十節:setup模塊
- 第十一節:filesystem和mount模塊
- 第十二節:synchronize模塊
- 第十三節: get_url模塊
- 第十四節: package模塊
- 第十五節:stat模塊
- 第十六節:unarchive模塊
- 第十七節: commang模塊
- 第四章:Ansible-playbook介紹
- 第五章:Ansible系統環境
- 第一節:Ansible Role 系統環境之epel設置