我正在尝试使用ansible-pull方法来运行一个playbooks,并在playbooks的运行时使用额外的变量。
下面是我需要如何使用vars来运行我的攻略。
ansible-playbook decode.yml --extra-vars "host_name=xxxxxxx bind_password=xxxxxxxxx swap_disk=xxxxx"bind_password将具有管理员密码的编码值。我试着为它写了下面的攻略。
我可以调试每个值并正确获得它,但在解码密码后,没有获得确切的值,或者不确定我做的是否正确?
---
- name: Install and configure AD authentication
hosts: test
become: yes
become_user: root
vars:
hostname: "{{ host_name }}"
diskname: "{{ swap_disk }}"
password: "{{ bind_password }}"
tasks:
- name: Ansible prompt example.
debug:
msg: "{{ bind_password }}"
- name: Ansible prompt example.
debug:
msg: "{{ host_name }}"
- name: Ansible prompt example.
debug:
msg: "{{ swap_disk }}"
- name: Setup the hostname
command: hostnamectl set-hostname --static "{{ host_name }}"
- name: decode passwd
command: export passwd=$(echo "{{ bind_password }}" | base64 --decode)
- name: print decoded password
shell: echo "$passwd"
register: mypasswd
- name: debug decode value
debug:
msg: "{{ mypasswd }}"但是,虽然我们可以使用命令解码base64值:
echo "encodedvalue" | base64 --decode我如何使用ansible-pull来运行这个剧本呢?
稍后,我想将这个剧本转换为角色(role1),然后需要运行它,如下所示:
我们如何使用ansible-pull运行基于角色的剧本?
发布于 2020-01-10 22:49:59
问题不在于b64decoding你的价值。您的命令应该不会造成任何问题,如果您在终端中手动输入,可能会得到预期的结果。
但是ansible会为每个任务创建一个ssh连接,因此每个shell/命令任务都会在一个新会话上启动。因此,在一个命令任务中导出环境变量并在下一个shell任务中使用环境变量永远不会起作用。
此外,当您在ansible中直接拥有所有需要的工具时,为什么还要使用如此多的命令/shell任务来处理这一切呢?这是你最后3个任务的可能重写,它适合于一个单独的任务。
- name: debug decoded value of bind_password
debug:
msg: "{{ bind_password | b64decode }}"https://stackoverflow.com/questions/59683715
复制相似问题