运行 如果客户端不在广告域中,则执行任务
Run ansible task if the client is not in ad domain
目前我正在创建一个 playbook 来自动化我们的 ubuntu 服务器 20.04.4 LTS 的初始服务器设置。我创建了以下简单任务:
- name: Join Domain domain.group
expect:
command: realm join -U domainuser domain.group
responses:
Password for *: "{{domain_join_pw}}"
这工作得很好,但是一旦任务完成并且我 运行 再次播放它就会被以下消息打断:
["realm: Already joined to this domain"]
有没有办法检查客户端是否已经在域中,如果不在域中则只运行任务?
我尝试了 ansible_fqdn 和 ansible_domain 这样的事实:
- name: Join Domain domain.group
expect:
command: realm join -U domainuser domain.group
responses:
Password for *: "{{domain_join_pw}}"
when: ansible_fqdn != "domain.group"
我是 Ansible 的新手,我认为这并不难,但不知道怎么做。
感谢每一个遮阳篷。
假定域已在变量中注册。
DOMAIN: "domain.group"
您可以使用以下通用且未经测试的示例来增强您的用例。
- name: Check if system is already domain joined
shell:
cmd: realm list | grep {{ DOMAIN }}
changed_when: false
check_mode: false
register: domain_joined
failed_when: domain_joined.rc !=0 and domain_joined.rc !=1
仅当未加入域时才让任务稍后 运行,例如
when: not domain_joined | bool
...目前我只有加入域的系统,因此我无法运行对未加入的系统进行完整测试。
您也可以查看命令
sssctl domain-status ${DOMAIN}
Online status: Online
Active servers:
AD Global Catalog: not connected
AD Domain Controller: ad.example.com
Discovered AD Global Catalog servers:
None so far.
Discovered AD Domain Controller servers:
- ad.example.com
或 {{ DOMAIN }}
当在 Ansible 中使用时,检查输出以及如何过滤和注册结果以供进一步使用。
目前我正在创建一个 playbook 来自动化我们的 ubuntu 服务器 20.04.4 LTS 的初始服务器设置。我创建了以下简单任务:
- name: Join Domain domain.group
expect:
command: realm join -U domainuser domain.group
responses:
Password for *: "{{domain_join_pw}}"
这工作得很好,但是一旦任务完成并且我 运行 再次播放它就会被以下消息打断:
["realm: Already joined to this domain"]
有没有办法检查客户端是否已经在域中,如果不在域中则只运行任务?
我尝试了 ansible_fqdn 和 ansible_domain 这样的事实:
- name: Join Domain domain.group
expect:
command: realm join -U domainuser domain.group
responses:
Password for *: "{{domain_join_pw}}"
when: ansible_fqdn != "domain.group"
我是 Ansible 的新手,我认为这并不难,但不知道怎么做。 感谢每一个遮阳篷。
假定域已在变量中注册。
DOMAIN: "domain.group"
您可以使用以下通用且未经测试的示例来增强您的用例。
- name: Check if system is already domain joined
shell:
cmd: realm list | grep {{ DOMAIN }}
changed_when: false
check_mode: false
register: domain_joined
failed_when: domain_joined.rc !=0 and domain_joined.rc !=1
仅当未加入域时才让任务稍后 运行,例如
when: not domain_joined | bool
...目前我只有加入域的系统,因此我无法运行对未加入的系统进行完整测试。
您也可以查看命令
sssctl domain-status ${DOMAIN}
Online status: Online
Active servers:
AD Global Catalog: not connected
AD Domain Controller: ad.example.com
Discovered AD Global Catalog servers:
None so far.
Discovered AD Domain Controller servers:
- ad.example.com
或 {{ DOMAIN }}
当在 Ansible 中使用时,检查输出以及如何过滤和注册结果以供进一步使用。