Как использовать модуль Command в Ansible при присоединении домена к серверам linux? - PullRequest
0 голосов
/ 13 апреля 2020

Мы пытаемся использовать область для интеграции домена для наших 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 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 }}"

Ошибка :

TASK [adjoin : Join system to AD] ***********************************************************************************************************************************************************
fatal: [localhost]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: 'item' is undefined\n\nThe error appears to be in '/tmp/ansiblepull/playbooks/roles/adjoin/tasks/main.yml': line 58, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: Join system to AD\n  ^ here\n"}

Может кто-нибудь помочь мне в решении этой проблемы.

1 Ответ

0 голосов
/ 21 апреля 2020

прежде всего спасибо всем за комментарии.

Я решил это с помощью ansible_facts:

- 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 }}"
...