Ansible-playbook语法进阶(变量的应用)

变量

  • 添加用户
    –给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}}
  1. 变量参数
    – 传递参数
    – -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

猜你喜欢

转载自blog.csdn.net/weixin_45942735/article/details/104297717