LINUX.ORG.RU

История изменений

Исправление SpaceRanger, (текущая версия) :

Держу в курсе происходящего. Возможно кому-то будет полезно, а может кто и укажэет на корявость решения.

Кароч, пока получилось вот так.

---
- name: update config
  hosts: all
  vars_files:
    - "vars/virtual_observer"
  tasks:
    - name: trying the same in shell
      shell:
         cd /home/observer/test_ansible; ls | grep -E "test_[0-9]+"
      register: out

    - debug: var=out.stdout_lines
      register: foo_result

    - name: the final result
      debug: var=foo_result

    - name: copy output to a file
      local_action:
        module: copy
        content: "{{ out.stdout_lines }}"
        dest: "{{ playbook_dir }}/{{ inventory_hostname }}"

    - name: update local var file
      delegate_to: localhost
      local_action: command python main.py "{{ inventory_hostname }}"

    - name: delete temporary config file
      delegate_to: localhost
      file:
        path: "{{ playbook_dir }}/{{ inventory_hostname }}"
        state: absent

    - name: test lookup
      debug:
        msg: "Host is {{ item.name }}, port1 is {{ item.port1 }} and port2 is {{ item.port2 }}"
      loop: "{{ namehost }}"

    - name: templating
      template:
        src: sys.config.j2
        dest: "/home/observer/test_ansible/{{ item.name }}/sys.config"
      loop: "{{ namehost }}"

Соответственно, файлик, который я создаю (типа вроде как переменные)

namehost:
  - name: test_1
    port1: 1201
    port2: 5601
  - name: test_2
    port1: 1202
    port2: 5602
  - name: test_3
    port1: 1203
    port2: 5603
  - name: test_4
    port1: 1204
    port2: 5604
  - name: test_5
    port1: 1205
    port2: 5605

Ну и шаблон Jinja для тестовых целей совсем простенький

This one goes to {{inventory_hostname}}
{{item.name}}
{{item.port1}}
{{item.port2}}

Пока что вопрос один - до того, как у меня отработает первая таска, никакого файла в vars_files у меня нет и вылетает с ошибкой об этом печальном факте. Подскажите, как этот филе создавать и чекать в процесе выполнения.

Так же хочу поплакаться об отстойности документации по ансиблу даже на официальном сайте.

Заранее высылаю лучи токсичной маскулинности

Исправление SpaceRanger, :

Держу в курсе происходящего. Возможно кому-то будет полезно, а может кто и укажэет на корявость решения.

Кароч, пока получилось вот так.

---
- name: update config
  hosts: all
  vars_files:
    - "vars/virtual_observer"
  tasks:
    - name: trying the same in shell
      shell:
         cd /home/observer/test_ansible; ls | grep -E "test_[0-9]+"
      register: out

    - debug: var=out.stdout_lines
      register: foo_result

    - name: the final result
      debug: var=foo_result

    - name: copy output to a file
      local_action:
        module: copy
        content: "{{ out.stdout_lines }}"
        dest: "{{ playbook_dir }}/{{ inventory_hostname }}"

    - name: update local var file
      delegate_to: localhost
      local_action: command python main.py "{{ inventory_hostname }}"

    - name: delete temporary config file
      delegate_to: localhost
      file:
        path: "{{ playbook_dir }}/{{ inventory_hostname }}"
        state: absent

    - name: test lookup
      debug:
        msg: "Host is {{ item.name }}, port1 is {{ item.port1 }} and port2 is {{ item.port2 }}"
      loop: "{{ namehost }}"

    - name: templating
      template:
        src: sys.config.j2
        dest: "/home/observer/test_ansible/{{ item.name }}/sys.config"
      loop: "{{ namehost }}"

Соответственно, файлик, который я создаю (типа вроде как переменные)

namehost:
  - name: test_1
    port1: 1201
    port2: 5601
  - name: test_2
    port1: 1202
    port2: 5602
  - name: test_3
    port1: 1203
    port2: 5603
  - name: test_4
    port1: 1204
    port2: 5604
  - name: test_5
    port1: 1205
    port2: 5605

Ну и шаблон Jinja для тестовых целей совсем простенький

This one goes to {{inventory_hostname}}
{{item.name}}
{{item.port1}}
{{item.port2}}

Пока что вопрос один - до того, как у меня отработает первая таска, никакого файла в vars_files у меня нет и вылетает с ошибкой об этом печальном факте. Подскажите, как этот филе создавать и чекать в процесе выполнения.

Заранее высылаю лучи токсичной маскулинности

Исходная версия SpaceRanger, :

Держу в курсе происходящего. Возможно кому-то будет полезно, а может кто и укажэет на корявость решения.

Кароч, пока получилось вот так.

---
- name: update config
  hosts: all
  vars_files:
    - "vars/virtual_observer"
  tasks:
    - name: trying the same in shell
      shell:
         cd /home/observer/test_ansible; ls | grep -E "test_[0-9]+"
      register: out

    - debug: var=out.stdout_lines
      register: foo_result

    - name: the final result
      debug: var=foo_result

    - name: copy output to a file
      local_action:
        module: copy
        content: "{{ out.stdout_lines }}"
        dest: "{{ playbook_dir }}/{{ inventory_hostname }}"

    - name: update local var file
      delegate_to: localhost
      local_action: command python main.py "{{ inventory_hostname }}"

    - name: delete temporary config file
      delegate_to: localhost
      file:
        path: "{{ playbook_dir }}/{{ inventory_hostname }}"
        state: absent

    - name: test lookup
      debug:
        msg: "Host is {{ item.name }}, port1 is {{ item.port1 }} and port2 is {{ item.port2 }}"
      loop: "{{ namehost }}"

    - name: templating
      template:
        src: sys.config.j2
        dest: "/home/observer/test_ansible/{{ item.name }}/sys.config"
      loop: "{{ namehost }}"

Соответственно, файлик, который я создаю (типа вроде как переменные)

namehost:
  - name: test_1
    port1: 1201
    port2: 5601
  - name: test_2
    port1: 1202
    port2: 5602
  - name: test_3
    port1: 1203
    port2: 5603
  - name: test_4
    port1: 1204
    port2: 5604
  - name: test_5
    port1: 1205
    port2: 5605

Ну и шаблон Jinja для тестовых целей совсем простенький

This one goes to {{inventory_hostname}}
{{item.name}}
{{item.port1}}
{{item.port2}}