Spec-Zone.ru › Ansible 2.11

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

Примечание

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

Для его установки используйте: 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
Используется только с мостом - [ageing-time <0-1000000>] время старения MAC-адреса Ethernet в секундах.
arp_interval
целое число
Используется только с bond - интервал ARP.
arp_ip_target
строка
Используется только с bond - целевой 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
целое число
Используется только с bond - downdelay.
egress
строка
Используется только с VLAN - отображение приоритета выхода VLAN.
flags
строка
Используется только с VLAN - флаги.
forwarddelay
целое число
По умолчанию:
15
Используется только с мостом - [forward-delay <2-30>] задержка пересылки STP в секундах.
gw4
строка
IPv4 шлюз для этого интерфейса.
Используйте формат 192.0.2.1.
Этот параметр является взаимоисключающим с параметром never_default4.
gw6
строка
IPv6 шлюз для этого интерфейса.
Используйте формат 2001:db8::1.
hairpin
булево
    Варианты:
  • no
  • да ←
Используется только с 'bridge-slave' - 'режим hairpin' для подчиненного, что позволяет отправлять пакеты обратно через подчиненный, на котором был получен пакет.
hellotime
целое число
По умолчанию:
2
Используется только с мостом - [hello-time <1-10>] время приветствия STP в секундах.
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.
master
строка
Главный интерфейс (имя интерфейса или UUID соединения или имя соединения) для моста, команды, bond.
maxage
целое число
По умолчанию:
20
Используется только с мостом - [max-age <6-42>] максимальный срок действия сообщения STP в секундах.
miimon
целое число
Используется только с bond - miimon.
Этот параметр по умолчанию равен 100 при отсутствии значения.
mode
строка
    Варианты:
  • 802.3ad
  • активный-резервный
  • balance-alb
  • balance-rr ←
  • balance-tlb
  • balance-xor
  • broadcast
Тип устройства или сетевого соединения, который вы хотите создать для bond, team или bridge.
mtu
целое число
MTU соединения, например, 9000. Это нельзя применить при создании интерфейса и выполняется после создания интерфейса.
Можно использовать при модификации Team, VLAN, Ethernet (будущие планы по реализации wifi, pppoe, infiniband)
Этот параметр по умолчанию равен 1500 при отсутствии значения.
never_default4
булево
добавлено в 2.0.0 community.general
    Варианты:
  • нет ←
  • да
Установить как маршрут по умолчанию.
Этот параметр взаимоисключающий с параметром gw4.
path_cost
целое число
По умолчанию:
100
Используется только с 'bridge-slave' - [<1-65535>] - стоимость порта STP для пунктов назначения через этот подчиненный.
primary
строка
Используется только с bond и представляет собой имя первичного интерфейса (для режима "active-backup"), обычно это 'ifname'.
priority
целое число
По умолчанию:
128
Используется только с 'bridge' - устанавливает приоритет STP.
route_metric4
целое число
добавлено в 2.0.0 community.general
Установить уровень метрики ipv4 маршрутов, настроенных на интерфейсе.
routes4
список / элементы=строка
добавлено в 2.0.0 community.general
Список ipv4 маршрутов.
Используйте формат '192.0.3.0/24 192.0.2.1'
slavepriority
целое число
По умолчанию:
32
Используется только с 'bridge-slave' - [<0-63>] - приоритет STP этого подчиненного.
state
строка / обязательно
    Варианты:
  • отсутствует
  • присутствует
Указывает, должно ли устройство существовать или нет, выполняя действие, если состояние отличается от указанного.
stp
булево
    Варианты:
  • no
  • да ←
Используется только с мостом и управляет включением протокола Spanning Tree (STP) для этого моста.
type
строка
    Варианты:
  • bond
  • bond-slave
  • bridge
  • bridge-slave
  • ethernet
  • generic
  • infiniband
  • ipip
  • sit
  • team
  • team-slave
  • vlan
  • vxlan
Тип устройства или сетевого соединения, которое вы хотите создать или изменить.
Тип generic добавлен в Ansible 2.5.
Тип infiniband добавлен в community.general 2.0.0.
updelay
целое число
Используется только с bond - updelay.
vlandev
строка
Используется только с VLAN - родительское устройство VLAN, можно использовать ifname.
vlanid
целое число
Используется только с VLAN - ID VLAN в диапазоне <0-4095>.
vxlan_id
целое число
Используется только с VXLAN - идентификатор VXLAN.
vxlan_local
строка
Используется только с VXLAN - локальный IP-адрес VXLAN.
vxlan_remote
строка
Используется только с VXLAN - целевой IP-адрес VXLAN.
zone
строка
добавлено в 2.0.0 community.general
Уровень доверия соединения.
При обновлении этого свойства на активном соединении, изменение вступает в силу немедленно.

Примеры

# 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

  - name: Add zone
    community.general.nmcli:
      type: ethernet
      conn_name: my-eth1
      zone: external
      state: present

# 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–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/community/general/nmcli_module.html

Spec-Zone.ru

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