LINUX.ORG.RU

Записать результат выполнения команды в template ansible

 ,


1

2

Нужно (1) записать результат выполнения обычной команды (скажем, hostname) в переменную. А затем, (2) эту переменную записать в template.

Для этого я делаю:

1. В defaults/main.yml:

test: "$(hostname)"

2. В templates/test.conf.j2

myhostname={{ test }}

3. В tasks/test.yml:

---
  - name: test variable in template
    template:
      src: templates/test.conf.j2
      dest: /root/test.conf
      owner: root
      group: root
      mode: 644

Таким образом, на каждой машине образовывается файл с её хостнеймом.

Вопрос: как это правильно делать в ansible? Почему ответ не так очевиден (из мануалов), ведь это, наверняка, распространненая задача?

Deleted

Не понял вообще первые два шага. Вам нужно использовать register, а если факты собираете то для штук типа хостнейма вообще не нужно ничего запрашивать предварительно и хватит {{ansible_hostname}} в шаблоне.

alozovskoy ★★★★★ ()
Последнее исправление: alozovskoy (всего исправлений: 1)
Ответ на: комментарий от alozovskoy

Команда hostname здесь просто для примера, на самом деле это более сложная команда. Но цель состоит в том, чтобы на всех машинах лежал один и тот же конфиг, отличающийся на каждой машине парой слов, зависящих от данной конкретной железки.

Deleted ()
Ответ на: комментарий от Deleted

Ну я просто к тому что если вы собираетесь какие-то данные типа инфы по CPU\RAM, хостнеймам\адресам, версии ОС писать то лучше смотреть в факты.

Вообще то, что вы хотите, вполне работоспособно - выполняете команды, пишете результат в register и потом используете в шаблонах. Использую такую штуку вполне успешно, и в целом весь плейбук там довольно примитивный, так что не думаю что у вас возникнут проблемы при реализации.

alozovskoy ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.