如何在Ansible中在运行时设置变量?
我尝试做的全部目标是成为root用户并运行一个进程。然而,我创建了一个进程,我调用一个辅助主机并运行一个脚本,该脚本获取我想要的任何Linux主机的根密码。之后,我将密码传递回var如何在Ansible中在运行时设置变量?,ansible,Ansible,我尝试做的全部目标是成为root用户并运行一个进程。然而,我创建了一个进程,我调用一个辅助主机并运行一个脚本,该脚本获取我想要的任何Linux主机的根密码。之后,我将密码传递回varansible\u been\u密码:。虽然每次我传递它时,它都会抛出错误“密码未定义” 我查找了变量优先级,但当我尝试另一种方法时,收到了相同的错误 代码: # Root - name: Run as root user. privileged escalation using su hosts: 10.x.x
ansible\u been\u密码:
。虽然每次我传递它时,它都会抛出错误“密码未定义”
我查找了变量优先级,但当我尝试另一种方法时,收到了相同的错误
代码:
# Root
- name: Run as root user. privileged escalation using su
hosts: 10.x.x.1
gather_facts: false
vars:
root_user: root
ansible_become_password: "{{ password.stdout }} "
tasks:
- name: Get root password
shell: /tmp/rootAccess.sh hostname
register: password
- debug:
msg: "{{ password.stdout }}"
delegate_to: 10.x.x.2
- name: whoami as root (su)
command: whoami
register: output_root_su
become_user: "{{ root_user }}"
become_method: su
become: yes
- name: output of 'whoami' (su)
debug:
msg: "user: {{ output_root_su.stdout }} "
错误:
fatal: [10.x.x.1]: FAILED! => {"msg": "The field 'become_pass' has an invalid value, which includes an undefined variable. The error was: 'password' is undefined"}
输入密码后,可以使用模块set_事实声明ansible_变为_密码
下面的剧本
- hosts: test_01
gather_facts: no
become: no
remote_user: admin
vars:
root_user: root
# ansible_become_password: "{{ password.user_input }}"
tasks:
- command: whoami
register: result
- debug:
var: result.stdout
- pause:
prompt: "Enter password"
register: password
- set_fact:
ansible_become_password: "{{ password.user_input }}"
- debug:
var: ansible_become_password
- command: whoami
register: result
become: yes
become_method: su
become_user: "{{ root_user }}"
- debug:
var: result.stdout
给予
注释
- 显然,使用ansible_Been_密码无法正常工作
- 模块提供了在运行时输入变量的方便方法
- 在结束引号之前有一个额外的空格。这将导致密码错误
ansible_become_password: "{{ password.stdout }} "
- hosts: test_01
gather_facts: no
become: no
remote_user: admin
vars:
root_user: root
# ansible_become_password: "{{ password.user_input }}"
tasks:
- command: whoami
register: result
- debug:
var: result.stdout
- pause:
prompt: "Enter password"
register: password
- set_fact:
ansible_become_password: "{{ password.user_input }}"
- debug:
var: ansible_become_password
- command: whoami
register: result
become: yes
become_method: su
become_user: "{{ root_user }}"
- debug:
var: result.stdout
给予
注释
- 显然,使用ansible_Been_密码无法正常工作
- 模块提供了在运行时输入变量的方便方法
- 在结束引号之前有一个额外的空格。这将导致密码错误
ansible_become_password: "{{ password.stdout }} "