Spec-Zone.ru › Ansible 2.10

community.general.nmcli – Управление сетью

Примечание

Этот плагин входит в коллекцию community.general (версия 1.3.2).

Для установки используйте: ansible-galaxy collection install community.general.

Для использования в плейбуке укажите: community.general.nmcli.

  • Обзор
  • Требования
  • Параметры
  • Примеры

Обзор

  • Управление сетевыми устройствами. Создание, изменение и управление различными типами подключений и устройств, например, ethernet, teams, bonds, vlans и т.д.
  • В системах типа CentOS 8 и Fedora >=29 требования могут быть удовлетворены установкой следующих пакетов: NetworkManager.
  • В системах типа CentOS 7 и Fedora <=28 требования могут быть удовлетворены установкой следующих пакетов: NetworkManager-tui.
  • В системах типа Ubuntu и Debian требования могут быть удовлетворены установкой следующих пакетов: network-manager
  • В системах openSUSE требования могут быть удовлетворены установкой следующих пакетов: NetworkManager.

Требования

Ниже перечислены требования к хосту, на котором выполняется этот модуль.

  • nmcli

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
ageingtime
целое число
По умолчанию:
300
Используется только с мостом — время старения адреса Ethernet MAC, в секундах ([ageing-time <0-1000000>]).
arp_interval
целое число
Используется только с объединением — интервал ARP.
arp_ip_target
строка
Используется только с объединением — целевой IP-адрес ARP.
autoconnect
булево
    Варианты:
  • no
  • да ←
Необходимо ли устанавливать подключение при загрузке.
Можно ли автоматически активировать профиль подключения
conn_name
строка / обязательно
Имя подключения. Шаблон: <тип>[-<имя_интерфейса>][-<номер>].
dhcp_client_id
строка
Идентификатор клиента DHCP, отправляемый серверу DHCP.
dns4
список / элементы=строка
Список до 3 DNS-серверов.
Формат IPv4, например, для добавления двух IPv4-адресов DNS-серверов используйте 192.0.2.53 198.51.100.53.
dns4_search
список / элементы=строка
Список DNS-доменных имен.
dns6
список / элементы=строка
Список до 3 DNS-серверов.
Формат IPv6, например, для добавления двух IPv6-адресов DNS-серверов используйте 2001:4860:4860::8888 2001:4860:4860::8844.
dns6_search
список / элементы=строка
Список DNS-доменных имен.
downdelay
целое число
Используется только с объединением — downdelay.
egress
строка
Используется только с VLAN — отображение приоритета исходящего VLAN.
flags
строка
Используется только с VLAN — флаги.
forwarddelay
целое число
По умолчанию:
15
Используется только с мостом — задержка пересылки STP ([forward-delay <2-30>], в секундах).
gw4
строка
IPv4 шлюз для этого интерфейса.
Используйте формат 192.0.2.1.
gw6
строка
IPv6 шлюз для этого интерфейса.
Используйте формат 2001:db8::1.
hairpin
булево
    Варианты:
  • no
  • да ←
Используется только с 'bridge-slave' — 'режим hairpin' для подчиненного интерфейса, который позволяет отправлять кадры обратно через подчиненный интерфейс, на котором был получен кадр.
hellotime
целое число
По умолчанию:
2
Используется только с мостом — время приветствия STP ([hello-time <1-10>], в секундах).
ifname
строка
Интерфейс, к которому привязать подключение.
Подключение будет применимо только к этому имени интерфейса.
Для интерфейсно-независимых подключений можно использовать специальное значение '*'.
Аргумент ifname является обязательным для всех типов подключений, кроме bond, team, bridge и vlan.
Этот параметр по умолчанию равен conn_name, если не задан.
ingress
строка
Используется только с VLAN — отображение приоритета входящего VLAN.
ip4
строка
IPv4-адрес для этого интерфейса.
Используйте формат 192.0.2.24/24.
ip6
строка
IPv6-адрес для этого интерфейса.
Используйте формат abbe::cafe.
ip_tunnel_dev
строка
Используется с IPIP/SIT — родительский интерфейс для этого IPIP/SIT туннеля, можно использовать ifname.
ip_tunnel_local
строка
Используется с IPIP/SIT — локальный IP-адрес IPIP/SIT туннеля.
ip_tunnel_remote
строка
Используется с IPIP/SIT — удаленный IP-адрес IPIP/SIT туннеля.
mac
строка
Используется только с мостом — MAC-адрес моста.
Обратите внимание, что это требует недавней функции ядра, первоначально представленной в ядре 3.15 upstream.
master
строка
Главный интерфейс <мастер (имя_интерфейса, или UUID подключения или conn_name) моста, команды, bond, мастер-профиля подключения>.
maxage
целое число
По умолчанию:
20
Используется только с мостом — максимальный возраст сообщения STP ([max-age <6-42>], в секундах).
miimon
целое число
Используется только с объединением — miimon.
Этот параметр по умолчанию равен 100 если не указан.
mode
строка
    Варианты:
  • 802.3ad
  • active-backup
  • balance-alb
  • balance-rr ←
  • balance-tlb
  • balance-xor
  • broadcast
Тип устройства или сетевого подключения, которое вы хотите создать для объединения, команды или моста.
mtu
целое число
MTU подключения, например, 9000. Это не может быть применено при создании интерфейса и выполняется после создания интерфейса.
Можно использовать при модификации Команды, VLAN, Ethernet (В будущих планах реализовать wifi, pppoe, infiniband)
Этот параметр по умолчанию равен 1500 если не задан.
path_cost
целое число
По умолчанию:
100
Используется только с 'bridge-slave' — [<1-65535>] — стоимость порта STP для адресатов через этот подчиненный интерфейс.
primary
строка
Используется только с объединением и представляет собой имя первичного интерфейса (для режима «активный/резервный»), обычно это «ifname».
priority
целое число
По умолчанию:
128
Используется только с 'bridge' — устанавливает приоритет STP.
slavepriority
целое число
По умолчанию:
32
Используется только с 'bridge-slave' — [<0-63>] — приоритет STP этого подчиненного интерфейса.
state
строка / обязательно
    Варианты:
  • отсутствует
  • присутствует
Указывает, должно ли устройство существовать или нет, выполняя действия, если состояние отличается от указанного.
stp
булево
    Варианты:
  • no
  • да ←
Используется только с мостом и управляет включением протокола Spanning Tree Protocol (STP) для этого моста.
type
строка
    Варианты:
  • bond
  • bond-slave
  • bridge
  • bridge-slave
  • ethernet
  • generic
  • ipip
  • sit
  • team
  • team-slave
  • vlan
  • vxlan
Тип устройства или сетевого подключения, которое вы хотите создать или изменить.
Тип generic добавлен в Ansible 2.5.
updelay
целое число
Используется только с объединением — updelay.
vlandev
строка
Используется только с VLAN — родительское устройство VLAN, можно использовать ifname.
vlanid
целое число
Используется только с VLAN — идентификатор VLAN в диапазоне <0-4095>.
vxlan_id
целое число
Используется только с VXLAN — идентификатор VXLAN.
vxlan_local
строка
Используется только с VXLAN — локальный IP-адрес VXLAN.
vxlan_remote
строка
Используется только с VXLAN — удалённый IP-адрес VXLAN.

Примеры

# These examples are using the following inventory:
#
# ## Directory layout:
#
# |_/inventory/cloud-hosts
# |           /group_vars/openstack-stage.yml
# |           /host_vars/controller-01.openstack.host.com
# |           /host_vars/controller-02.openstack.host.com
# |_/playbook/library/nmcli.py
# |          /playbook-add.yml
# |          /playbook-del.yml
# ```
#
# ## inventory examples
# ### groups_vars
# ```yml
# ---
# #devops_os_define_network
# storage_gw: "192.0.2.254"
# external_gw: "198.51.100.254"
# tenant_gw: "203.0.113.254"
#
# #Team vars
# nmcli_team:
#   - conn_name: tenant
#     ip4: '{{ tenant_ip }}'
#     gw4: '{{ tenant_gw }}'
#   - conn_name: external
#     ip4: '{{ external_ip }}'
#     gw4: '{{ external_gw }}'
#   - conn_name: storage
#     ip4: '{{ storage_ip }}'
#     gw4: '{{ storage_gw }}'
# nmcli_team_slave:
#   - conn_name: em1
#     ifname: em1
#     master: tenant
#   - conn_name: em2
#     ifname: em2
#     master: tenant
#   - conn_name: p2p1
#     ifname: p2p1
#     master: storage
#   - conn_name: p2p2
#     ifname: p2p2
#     master: external
#
# #bond vars
# nmcli_bond:
#   - conn_name: tenant
#     ip4: '{{ tenant_ip }}'
#     gw4: ''
#     mode: balance-rr
#   - conn_name: external
#     ip4: '{{ external_ip }}'
#     gw4: ''
#     mode: balance-rr
#   - conn_name: storage
#     ip4: '{{ storage_ip }}'
#     gw4: '{{ storage_gw }}'
#     mode: balance-rr
# nmcli_bond_slave:
#   - conn_name: em1
#     ifname: em1
#     master: tenant
#   - conn_name: em2
#     ifname: em2
#     master: tenant
#   - conn_name: p2p1
#     ifname: p2p1
#     master: storage
#   - conn_name: p2p2
#     ifname: p2p2
#     master: external
#
# #ethernet vars
# nmcli_ethernet:
#   - conn_name: em1
#     ifname: em1
#     ip4: '{{ tenant_ip }}'
#     gw4: '{{ tenant_gw }}'
#   - conn_name: em2
#     ifname: em2
#     ip4: '{{ tenant_ip1 }}'
#     gw4: '{{ tenant_gw }}'
#   - conn_name: p2p1
#     ifname: p2p1
#     ip4: '{{ storage_ip }}'
#     gw4: '{{ storage_gw }}'
#   - conn_name: p2p2
#     ifname: p2p2
#     ip4: '{{ external_ip }}'
#     gw4: '{{ external_gw }}'
# ```
#
# ### host_vars
# ```yml
# ---
# storage_ip: "192.0.2.91/23"
# external_ip: "198.51.100.23/21"
# tenant_ip: "203.0.113.77/23"
# ```



## playbook-add.yml example

---
- hosts: openstack-stage
  remote_user: root
  tasks:

  - name: Install needed network manager libs
    ansible.builtin.package:
      name:
        - NetworkManager-libnm
        - nm-connection-editor
        - libsemanage-python
        - policycoreutils-python
      state: present

##### Working with all cloud nodes - Teaming
  - name: Try nmcli add team - conn_name only & ip4 gw4
    community.general.nmcli:
      type: team
      conn_name: '{{ item.conn_name }}'
      ip4: '{{ item.ip4 }}'
      gw4: '{{ item.gw4 }}'
      state: present
    with_items:
      - '{{ nmcli_team }}'

  - name: Try nmcli add teams-slave
    community.general.nmcli:
      type: team-slave
      conn_name: '{{ item.conn_name }}'
      ifname: '{{ item.ifname }}'
      master: '{{ item.master }}'
      state: present
    with_items:
      - '{{ nmcli_team_slave }}'

###### Working with all cloud nodes - Bonding
  - name: Try nmcli add bond - conn_name only & ip4 gw4 mode
    community.general.nmcli:
      type: bond
      conn_name: '{{ item.conn_name }}'
      ip4: '{{ item.ip4 }}'
      gw4: '{{ item.gw4 }}'
      mode: '{{ item.mode }}'
      state: present
    with_items:
      - '{{ nmcli_bond }}'

  - name: Try nmcli add bond-slave
    community.general.nmcli:
      type: bond-slave
      conn_name: '{{ item.conn_name }}'
      ifname: '{{ item.ifname }}'
      master: '{{ item.master }}'
      state: present
    with_items:
      - '{{ nmcli_bond_slave }}'

##### Working with all cloud nodes - Ethernet
  - name: Try nmcli add Ethernet - conn_name only & ip4 gw4
    community.general.nmcli:
      type: ethernet
      conn_name: '{{ item.conn_name }}'
      ip4: '{{ item.ip4 }}'
      gw4: '{{ item.gw4 }}'
      state: present
    with_items:
      - '{{ nmcli_ethernet }}'

## playbook-del.yml example
- hosts: openstack-stage
  remote_user: root
  tasks:

  - name: Try nmcli del team - multiple
    community.general.nmcli:
      conn_name: '{{ item.conn_name }}'
      state: absent
    with_items:
      - conn_name: em1
      - conn_name: em2
      - conn_name: p1p1
      - conn_name: p1p2
      - conn_name: p2p1
      - conn_name: p2p2
      - conn_name: tenant
      - conn_name: storage
      - conn_name: external
      - conn_name: team-em1
      - conn_name: team-em2
      - conn_name: team-p1p1
      - conn_name: team-p1p2
      - conn_name: team-p2p1
      - conn_name: team-p2p2

  - name: Add an Ethernet connection with static IP configuration
    community.general.nmcli:
      conn_name: my-eth1
      ifname: eth1
      type: ethernet
      ip4: 192.0.2.100/24
      gw4: 192.0.2.1
      state: present

  - name: Add an Team connection with static IP configuration
    community.general.nmcli:
      conn_name: my-team1
      ifname: my-team1
      type: team
      ip4: 192.0.2.100/24
      gw4: 192.0.2.1
      state: present
      autoconnect: yes

  - name: Optionally, at the same time specify IPv6 addresses for the device
    community.general.nmcli:
      conn_name: my-eth1
      ifname: eth1
      type: ethernet
      ip4: 192.0.2.100/24
      gw4: 192.0.2.1
      ip6: 2001:db8::cafe
      gw6: 2001:db8::1
      state: present

  - name: Add two IPv4 DNS server addresses
    community.general.nmcli:
      conn_name: my-eth1
      type: ethernet
      dns4:
      - 192.0.2.53
      - 198.51.100.53
      state: present

  - name: Make a profile usable for all compatible Ethernet interfaces
    community.general.nmcli:
      ctype: ethernet
      name: my-eth1
      ifname: '*'
      state: present

  - name: Change the property of a setting e.g. MTU
    community.general.nmcli:
      conn_name: my-eth1
      mtu: 9000
      type: ethernet
      state: present

  - name: Add VxLan
    community.general.nmcli:
      type: vxlan
      conn_name: vxlan_test1
      vxlan_id: 16
      vxlan_local: 192.168.1.2
      vxlan_remote: 192.168.1.5

  - name: Add ipip
    community.general.nmcli:
      type: ipip
      conn_name: ipip_test1
      ip_tunnel_dev: eth0
      ip_tunnel_local: 192.168.1.2
      ip_tunnel_remote: 192.168.1.5

  - name: Add sit
    community.general.nmcli:
      type: sit
      conn_name: sit_test1
      ip_tunnel_dev: eth0
      ip_tunnel_local: 192.168.1.2
      ip_tunnel_remote: 192.168.1.5

# nmcli exits with status 0 if it succeeds and exits with a status greater
# than zero when there is a failure. The following list of status codes may be
# returned:
#
#     - 0 Success - indicates the operation succeeded
#     - 1 Unknown or unspecified error
#     - 2 Invalid user input, wrong nmcli invocation
#     - 3 Timeout expired (see --wait option)
#     - 4 Connection activation failed
#     - 5 Connection deactivation failed
#     - 6 Disconnecting device failed
#     - 7 Connection deletion failed
#     - 8 NetworkManager is not running
#     - 9 nmcli and NetworkManager versions mismatch
#     - 10 Connection, device, or access point does not exist.

Авторы

  • Chris Long (@alcamie101)

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/community/general/nmcli_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API