register
保存shell命令输出结果到一个变量中去
---
- hosts: testB
remote_user: root
tasks:
- name: test shell
shell: "echo test > /var/testshellfile"
register: testvar 注册定义变量
- name: shell module return values
debug:
var: testvar 必须为var

获取键值对
---
- hosts: testB
remote_user: root
tasks:
- name: test shell
shell: "echo test > /var/testshellfile"
register: testvar
- name: shell module return values
debug:
msg: "{{testvar.cmd}}"
---
- hosts: testB
remote_user: root
tasks:
- name: test shell
shell: "echo test > /var/testshellfile"
register: testvar
- name: shell module return values
debug:
msg: "{{testvar['cmd']}}"

vars_prompt
获取用户交互信息
---
- hosts: testB
remote_user: root
vars_prompt:
- name: "your_name" 第一个变量
prompt: "What is your name?" 提示输入信息 输入后存到变量里面
- name: "your_age" 第二个变量
prompt: "How old are you?"
tasks:
- name: output values
debug:
msg: Your name is {{your_name}},you are {{your_age}} years old.

让输入回显
---
- hosts: testB
remote_user: root
vars_prompt:
- name: "your_name"
prompt: "What is your name?"
private: no 非私有,可以看到
- name: "your_age"
prompt: "How old are you?"
private: no
tasks:
- name: output values
debug:
msg: Your name is {{your_name}},you are {{your_age}} years old.

设置默认值
---
- hosts: testB
remote_user: root
vars_prompt:
- name: "solution"
prompt: "Choose the solution you want \n
A: apple\n
B: banana\n
C: orige\n"
private: no
default: A
tasks:
- name: output vars
debug:
msg: Thi final solution is {{solution}}
默认选A

选择B

创建一个用户,并加入密码
---
- hosts: testB
remote_user: root
vars_prompt:
- name: "user"
prompt: "useradd"
private: no
- name: "password"
prompt: "passwordadd"
private: no
tasks:
- name: useradd
user:
name: "{{user}}"
password: "{{password}}"

上述还存在一个问题就是在playbook里面无法解决password加密问题
为了解决 进行如下操作
在ansible端
yum install wget -y
wget https://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
tar zxf setuptools-0.6c11.tar.gz
tar zxf pip-20.0.2.tar.gz
cd pip-20.0.2
python setup.py install
pip install passlib

在上面这个库的支持下,可以有sha1加密
---
- hosts: testB
remote_user: root
vars_prompt:
- name: "hash_string"
prompt: "Enter something"
private: no
encrypt: "sha512_crypt" 加密
tasks:
- name: output the string after hash
debug:
msg: "{{hash_string}}"

完善给用户密码的playbook
---
- hosts: testB
remote_user: root
vars_prompt:
- name: "user"
prompt: "useradd"
private: no
- name: "password"
prompt: "passwordadd"
encrypt: "sha512_crypt"
tasks:
- name: useradd
user:
name: "{{user}}"
password: "{{password}}"


重复输入密码
---
- hosts: testB
remote_user: root
vars_prompt:
- name: "user"
prompt: "useradd"
private: no
- name: "password"
prompt: "passwordadd"
encrypt: "sha512_crypt"
confirm: yes 重复
tasks:
- name: useradd
user:
name: "{{user}}"
password: "{{password}}"


本文介绍了如何在Ansible playbook中使用register变量保存shell命令输出,通过vars_prompt获取用户交互信息,包括设置默认值和处理密码输入。特别讨论了在playbook中处理密码加密的问题,提出在Ansible端利用特定库支持的sha1加密方法来完善用户密码的管理。
5385

被折叠的 条评论
为什么被折叠?



