在加入linux服务器时,如何在Ansible域中使用命令模块?
我们正在尝试为linux服务器使用域集成 我试图使用命令模块在playbook中使用以下代码,但出现错误:在加入linux服务器时,如何在Ansible域中使用命令模块?,linux,ansible,realm,Linux,Ansible,Realm,我们正在尝试为linux服务器使用域集成 我试图使用命令模块在playbook中使用以下代码,但出现错误: - name: install pexpect using pip shell: /bin/bash -c "pip install pexpect" - name: Join system to AD expect: command: "{{ item }}" loop: - source /etc/os-release - realm
- name: install pexpect using pip
shell: /bin/bash -c "pip install pexpect"
- name: Join system to AD
expect:
command: "{{ item }}"
loop:
- source /etc/os-release
- realm join --membership-software=adcli --user=username@EXAMPLE.COM --computer-ou="OU={{ env }},OU={{ account }},OU=XXXX,OU=XXXXXX,DC=XXXXXXX,DC=XXXXXXX" --os-name="$PRETTY_NAME" --os-version="$VERSION" <DCNAME>
responses:
Password for *: "{{ username | b64decode }}"
谁能帮我解决这个问题。首先感谢大家的评论 我已经用事实解决了这个问题:
- name: install pexpect using pip
pip:
name: pexpect
- name: Join system to AD
expect:
command: /bin/bash -c "realm join --membership-software=adcli --user=username@DOMAINNAME --computer-ou="OU={{ env }},OU={{ account }},OU=xxx,OU=xxxx,DC=xxxxx,DC=xxxx" --os-name={{ ansible_distribution }} --os-version={{ ansible_distribution_version }} DCNAME"
responses:
Password for *: "{{ join_user_pass | b64decode }}"
1) 循环在任务中缩进错误:它是一个任务选项,而不是
expect
模块选项。2) 与您当前的问题无关,但这是一个很好的实践:不要在shell中安装python模块,请使用.Thank@Zeitounator。您能给出使用loop with expect模块的命令示例吗。。太长,读不下去了将loop放在任务末尾,与expect
和name
处于相同的缩进级别。我没有看到任何示例谈到在expect模块中使用多个命令&我们如何将loop与command&expect模块一起使用?一种简单的方法是将这些命令添加到脚本中,将脚本推送到主机,并在expect模块命令中调用该脚本。如果您想做一些更奇特的事情,请阅读,注意注释,转到文档并在那里查找expect示例。
- name: install pexpect using pip
pip:
name: pexpect
- name: Join system to AD
expect:
command: /bin/bash -c "realm join --membership-software=adcli --user=username@DOMAINNAME --computer-ou="OU={{ env }},OU={{ account }},OU=xxx,OU=xxxx,DC=xxxxx,DC=xxxx" --os-name={{ ansible_distribution }} --os-version={{ ansible_distribution_version }} DCNAME"
responses:
Password for *: "{{ join_user_pass | b64decode }}"