Olaf Bohlen
2023-04-26 88259f01f58ac09067ee8eba6f22a648f0a873a6
do457
3 files deleted
23 files added
1 files modified
318 ■■■■■ changed files
.gitignore 3 ●●●●● patch | view | raw | blame | history
ansible.cfg 15 ●●●● patch | view | raw | blame | history
cdp-neighbors.txt 1 ●●●● patch | view | raw | blame | history
configure_static_host_entries.yaml 9 ●●●●● patch | view | raw | blame | history
cs01-demolan.yaml 13 ●●●●● patch | view | raw | blame | history
cs02-fas1_0.yaml 8 ●●●●● patch | view | raw | blame | history
group_vars/cisco 2 ●●●●● patch | view | raw | blame | history
group_vars/ios/vars.yaml 6 ●●●●● patch | view | raw | blame | history
group_vars/ios/vault.yaml 6 ●●●●● patch | view | raw | blame | history
group_vars/network 2 ●●●●● patch | view | raw | blame | history
host_vars/cs01.example.com 8 ●●●●● patch | view | raw | blame | history
hostname-template.j2 4 ●●●● patch | view | raw | blame | history
hostnames.yaml 6 ●●●●● patch | view | raw | blame | history
inventory 6 ●●●●● patch | view | raw | blame | history
inventory/iv-static 20 ●●●●● patch | view | raw | blame | history
ios_interface_config.yaml 25 ●●●●● patch | view | raw | blame | history
ios_interface_config_role.yaml 9 ●●●●● patch | view | raw | blame | history
roles/iosinterface/.travis.yml 29 ●●●●● patch | view | raw | blame | history
roles/iosinterface/README.md 38 ●●●●● patch | view | raw | blame | history
roles/iosinterface/defaults/main.yml 5 ●●●●● patch | view | raw | blame | history
roles/iosinterface/handlers/main.yml 2 ●●●●● patch | view | raw | blame | history
roles/iosinterface/meta/main.yml 52 ●●●●● patch | view | raw | blame | history
roles/iosinterface/tasks/main.yml 20 ●●●●● patch | view | raw | blame | history
roles/iosinterface/tests/inventory 2 ●●●●● patch | view | raw | blame | history
roles/iosinterface/tests/test.yml 5 ●●●●● patch | view | raw | blame | history
roles/iosinterface/vars/main.yml 2 ●●●●● patch | view | raw | blame | history
simpleplay.yaml 20 ●●●●● patch | view | raw | blame | history
.gitignore
New file
@@ -0,0 +1,3 @@
backup
*.retry
*~
ansible.cfg
@@ -1,18 +1,9 @@
[defaults]
inventory      = ./inventory
remote_user    = devops
ask_pass       = true
remote_tmp     = /var/tmp/.ansible-$LOGNAME/
gathering      = explicit
inventory = ./inventory
ask_pass = True
host_key_checking = False
[persistent_connection]
command_timeout = 180
connect_timeout = 100
connect_retry_timeout = 100
[privilege_escalation]
become=False
become_method=sudo
become_user=root
become_ask_pass=true
cdp-neighbors.txt
New file
@@ -0,0 +1 @@
ansible cs01.example.com -m cisco.ios.ios_command -a "commands='sh cdp neighbors'"
configure_static_host_entries.yaml
New file
@@ -0,0 +1,9 @@
- name: configure static host entries
  hosts: ios
  vars_files:
    - hostnames.yaml
  tasks:
    - name: render template for hosts file
      cisco.ios.ios_config:
        backup: yes
        src: hostname-template.j2
cs01-demolan.yaml
New file
@@ -0,0 +1,13 @@
- name: configure an interface using a role
  hosts: cs01.example.com
  roles:
    - role: iosinterface
      vars:
        ip: "{{ net1['ip'] }}"
        description: "{{ net1['description'] }}"
        interface: "{{ net1['interface'] }}"
    - role: iosinterface
      vars:
        ip: "{{ net2['ip'] }}"
        description: "{{ net2['description'] }}"
        interface: "{{ net2['interface'] }}"
cs02-fas1_0.yaml
New file
@@ -0,0 +1,8 @@
- name: configure an interface using a role
  hosts: cs02.example.com
  vars:
    interface: FastEthernet1/0
    description: "demolan0 access"
    ip: 10.42.42.2/26
  roles:
    - iosinterface
group_vars/cisco
File was deleted
group_vars/ios/vars.yaml
New file
@@ -0,0 +1,6 @@
ansible_network_os: ios
ansible_connection: ansible.netcommon.network_cli
ansible_user: admin
ansible_password: cisco123
ssh_type: paramiko
group_vars/ios/vault.yaml
New file
@@ -0,0 +1,6 @@
$ANSIBLE_VAULT;1.1;AES256
32363631346262616561663739313236343839656134636634386263643831396137303665633133
3133316435363661653464353363303338353732393361380a363436313438323735353533303565
66393430613036623836626464613261376162653463383263633836376236386434613239643030
3965616333396631660a643733643637356132383639633162373032343161393065633338393936
66323465363833383639656533333936623132343465386531616231363035393530
group_vars/network
File was deleted
host_vars/cs01.example.com
New file
@@ -0,0 +1,8 @@
net1:
  interface: FastEthernet1/0
  description: "demolan0 access"
  ip: 10.42.42.1/26
net2:
  interface: FastEthernet2/0
  description: "demolan1 access"
  ip: 10.23.23.1/26
hostname-template.j2
New file
@@ -0,0 +1,4 @@
{% for entry in hostname_data %}
{# comment #}
ip host {{ entry['name'] }} {{ entry['ipv4'] | ipaddr('address') }}
{% endfor %}
hostnames.yaml
New file
@@ -0,0 +1,6 @@
hostname_data:
  - name: cs01.example.com
    ipv4: 172.25.254.225/24
  - name: cs02.example.com
    ipv4: 172.25.254.226/24
  - { name: cs03.example.com, ipv4: 172.25.254.227/24 }
inventory
File was deleted
inventory/iv-static
New file
@@ -0,0 +1,20 @@
[network:children]
ios
vyos
[ios:children]
cloudservices
[cloudservices]
cs01.example.com
cs02.example.com
[vyos:children]
spines
leafs
[spines]
spine[01:02]
[leafs]
leaf[01:02]
ios_interface_config.yaml
New file
@@ -0,0 +1,25 @@
- name: show ipaddr filter
  hosts: cs01.example.com
  vars:
    interface: FastEthernet1/0
    description: "demolan0 access"
    ip: 10.42.42.1/26
  tasks:
    - name: gather all facts
      cisco.ios.ios_facts:
        gather_subset: all
    - debug:
        msg: |
          Interface {{ interface }}
            ip address {{ ip | ipaddr('address') }} {{ ip | ipaddr('netmask') }}
    - name: configure interface
      cisco.ios.ios_interfaces:
        config:
          - name: "{{ interface }}"
            description: "{{ description }}"
    - name: configure IP on interface
      cisco.ios.ios_l3_interfaces:
        config:
          - name: "{{ interface }}"
            ipv4:
              - address: "{{ ip }}"
ios_interface_config_role.yaml
New file
@@ -0,0 +1,9 @@
- name: P1 configure an interface using a role
  hosts: cs01.example.com
  vars:
    interface: FastEthernet1/0
    description: "demolan0 access"
    ip: 10.42.42.1/26
  # we are not using tasks here, just calling a role
  roles:
    - iosinterface
roles/iosinterface/.travis.yml
New file
@@ -0,0 +1,29 @@
---
language: python
python: "2.7"
# Use the new container infrastructure
sudo: false
# Install ansible
addons:
  apt:
    packages:
    - python-pip
install:
  # Install ansible
  - pip install ansible
  # Check ansible version
  - ansible --version
  # Create ansible.cfg with correct roles_path
  - printf '[defaults]\nroles_path=../' >ansible.cfg
script:
  # Basic role syntax check
  - ansible-playbook tests/test.yml -i tests/inventory --syntax-check
notifications:
  webhooks: https://galaxy.ansible.com/api/v1/notifications/
roles/iosinterface/README.md
New file
@@ -0,0 +1,38 @@
Role Name
=========
A brief description of the role goes here.
Requirements
------------
Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.
Role Variables
--------------
A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well.
Dependencies
------------
A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles.
Example Playbook
----------------
Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
    - hosts: servers
      roles:
         - { role: username.rolename, x: 42 }
License
-------
BSD
Author Information
------------------
An optional section for the role authors to include contact information, or a website (HTML is not allowed).
roles/iosinterface/defaults/main.yml
New file
@@ -0,0 +1,5 @@
---
# defaults file for iosinterface
interface: FastEthernet1/0
description: "demolan0 access"
ip: 10.42.42.1/26
roles/iosinterface/handlers/main.yml
New file
@@ -0,0 +1,2 @@
---
# handlers file for iosinterface
roles/iosinterface/meta/main.yml
New file
@@ -0,0 +1,52 @@
galaxy_info:
  author: Olaf Bohlen
  description: configure ip on ios
  company: Red Hat
  # If the issue tracker for your role is not on github, uncomment the
  # next line and provide a value
  # issue_tracker_url: http://example.com/issue/tracker
  # Choose a valid license ID from https://spdx.org - some suggested licenses:
  # - BSD-3-Clause (default)
  # - MIT
  # - GPL-2.0-or-later
  # - GPL-3.0-only
  # - Apache-2.0
  # - CC-BY-4.0
  license: BSD-3-Clause
  min_ansible_version: 2.1
  # If this a Container Enabled role, provide the minimum Ansible Container version.
  # min_ansible_container_version:
  #
  # Provide a list of supported platforms, and for each platform a list of versions.
  # If you don't wish to enumerate all versions for a particular platform, use 'all'.
  # To view available platforms and versions (or releases), visit:
  # https://galaxy.ansible.com/api/v1/platforms/
  #
  # platforms:
  # - name: Fedora
  #   versions:
  #   - all
  #   - 25
  # - name: SomePlatform
  #   versions:
  #   - all
  #   - 1.0
  #   - 7
  #   - 99.99
  galaxy_tags: []
    # List tags for your role here, one per line. A tag is a keyword that describes
    # and categorizes the role. Users find roles by searching for tags. Be sure to
    # remove the '[]' above, if you add tags to this list.
    #
    # NOTE: A tag is limited to a single word comprised of alphanumeric characters.
    #       Maximum 20 tags per role.
dependencies: []
  # List your role dependencies here, one per line. Be sure to remove the '[]' above,
  # if you add dependencies to this list.
roles/iosinterface/tasks/main.yml
New file
@@ -0,0 +1,20 @@
---
# tasks file for iosinterface
- name: gather all facts
  cisco.ios.ios_facts:
    gather_subset: all
- debug:
    msg: |
      Interface {{ interface }}
        ip address {{ ip | ipaddr('address') }} {{ ip | ipaddr('netmask') }}
- name: configure interface
  cisco.ios.ios_interfaces:
    config:
      - name: "{{ interface }}"
        description: "{{ description }}"
- name: configure IP on interface
  cisco.ios.ios_l3_interfaces:
    config:
      - name: "{{ interface }}"
        ipv4:
          - address: "{{ ip }}"
roles/iosinterface/tests/inventory
New file
@@ -0,0 +1,2 @@
localhost
roles/iosinterface/tests/test.yml
New file
@@ -0,0 +1,5 @@
---
- hosts: localhost
  remote_user: root
  roles:
    - iosinterface
roles/iosinterface/vars/main.yml
New file
@@ -0,0 +1,2 @@
---
# vars file for iosinterface
simpleplay.yaml
New file
@@ -0,0 +1,20 @@
- name: P1 foo
  hosts: cs01.example.com
  become: true
  tasks:
    - name: P1T1 backup cs01 config
      cisco.ios.ios_config:
        backup: true
      ignore_errors: true
    - name: P1T2 facts
      cisco.ios.ios_facts:
    - name: P1T3 print facts
      debug:
        msg: "fact is: {{ item }}"
      with_dict: "{{ ansible_facts }}"
      when:
        - item.key == "net_model"