变量
- 添加用户
–给web主机添加用户I4,设置默认密码123
---
- hosts: web
vars:
username: I4
tasks:
- name: create user "{
{
username}}"
user:
name: "{
{username}}"
- shell: echo 123 | passwd --stdin "{
{
username}}"
- 设密码
– 解决密码明文问题
– user模块的password为什么不能设置密码呢
– 经过测试发现,password是把字符串直接写入shadow,并没有改变,而Linux的shadow密码是经过加密的,所以不能使用 - 解决方案
–变量过滤器password_hash
{ { ‘urpassword’| password_hash(‘sha512’) }} - 变量过滤器
–给db主机添加用户tan,设置默认密码123abc…A
1. hosts: db
vars:
username: tan
tasks:
- name: create user "{
{
username }}"
user:
password={
{
'123abc...A '| password_hash('sha512')}}
name={
{
username}}
- 变量参数
– 传递参数
– -e 参数
– 参数格式必须是json 或yaml
– yaml 格式可以使用参数文件,例如
– args,yml
—
username:
haha
– -e @args,yml
变量练习
1.练习使用user模块添加用户
2.练习使用变量简化task.让play通用性更强
3.练习使用过滤器
实现此案例需要按照如下步骤进行。
步骤一:使用user模块添加用户,并修改密码
[root@manager ansible]# vim user.yml
---
- hosts: web1
remote_user: root
vars:
username: tan
tasks:
- name: create user "{
{
username}}"
user: group=wheel uid=1000 name={
{
username}}
- shell: echo 123456 | passwd --stdin tan
- shell: chage -d 0 {
{
username}}
[root@manager ansible]# ansible-playbook useradd.yml
PLAY [web1] ********************************************************************
TASK [Gathering Facts] *********************************************************
ok: [web1]
TASK [create user “tan”] *******************************************************
changed: [web1]
TASK [command] *****************************************************************
changed: [web1]
TASK [command] *****************************************************************
changed: [web1]
PLAY RECAP *********************************************************************
web1 : ok=4 changed=3 unreachable=0 failed=0
步骤二:变量过滤器,创建一个用户,设置密码
[root@manager ansible]# vim useradd1.yml
---
- hosts: web1
remote_user: root
tasks:
- user:
name: tan1
group: root
password: "{
{'123456' | password_hash('sha512')}}"
- shell: chage -d 0 tan1
[root@manager ansible]# ansible-playbook useradd1.yml
PLAY [web1] ********************************************************************
TASK [Gathering Facts] *********************************************************
ok: [web1]
TASK [user] ********************************************************************
changed: [web1]
TASK [command] *****************************************************************
changed: [web1]
PLAY RECAP *********************************************************************
web1 : ok=3 changed=2 unreachable=0 failed=0
步骤三:定义一个变量创建用户
[root@ansible ansible]# vim user2.yml
---
- hosts: web1
remote_user: root
vars:
user: tan2
tasks:
- user:
name: "{
{user}}"
group: root
password: "{
{'123456' | password_hash('sha512')}}"
- shell: chage -d 0 "{
{
user}}"
[root@manager ansible]# ansible-playbook useradd2.yml
PLAY [web1] ********************************************************************
TASK [Gathering Facts] *********************************************************
ok: [web1]
TASK [user] ********************************************************************
changed: [web1]
TASK [command] *****************************************************************
changed: [web1]
PLAY RECAP *********************************************************************
web1 : ok=3 changed=2 unreachable=0 failed=0