Search code examples
ansiblecisco

ansible cisco modifying multiple object-groups with single playbook lines


I have following playbook to modify ASA object-group:

    ---
- hosts: us_asa   
  connection: local   
  gather_facts: false

  tasks:
    - name: change config
      asa_config:
        auth_pass: "{{ ansible_ssh_password }}"
        username: "{{ ansible_ssh_user }}"
        password: "{{ ansible_ssh_password }}"
        authorize: yes
        timeout: 45
        lines:
          - network-object host 1.2.3.4
          - network-object host 2.3.2.3
        parents: ['object-group network BAD_IPs']

This works fine for single group.

Any suggestion how to modify multiple groups with same connection? If I add another object-group after parents: ['object-group network BAD_IPs'] example:

    ---
- hosts: us_asa   
  connection: local   
  gather_facts: false

  tasks:
    - name: change config
      asa_config:
        auth_pass: "{{ ansible_ssh_password }}"
        username: "{{ ansible_ssh_user }}"
        password: "{{ ansible_ssh_password }}"
        authorize: yes
        timeout: 45
        lines:
          - network-object host 1.2.3.4
          - network-object host 2.3.2.3
        parents: ['object-group network BAD_IPs']
          - network-object host 4.4.4.4
        parents: ['object-group network Good_IPs']

This fails The offending line appears to be:

    parents: ['object-group network BAD_IPs']
      - network-object host 4.4.4.4
      ^ here

Any recommendation on syntax I should use?

Thank you in advance!


Solution

  • You just have a basic YAML syntax error there. A YAML dictionary key with a list value looks either like this:

    key: [item1, item2, item3]
    

    Or like this:

    key:
      - item1
      - item2
      - item3
    

    You have some weird combination of the two:

        parents: ['object-group network BAD_IPs']
          - network-object host 4.4.4.4
    

    I don't know exactly what structure you want, but what you have there is simply invalid.