组成结构:
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设置