Spec-Zone.ru › Ansible 2.9

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

  • Краткое описание
  • Требования
  • Параметры
  • Примеры
  • Статус

Краткое описание

  • Управление сетевыми устройствами. Создание, изменение и управление различными типами подключений и устройств, например, Ethernet, Team, Bond, VLAN и т.д.
  • В системах типа CentOS 8 и Fedora >=29, требования могут быть выполнены путем установки следующих пакетов: NetworkManager-nmlib, libsemanage-python, policycoreutils-python.
  • В системах типа CentOS 7 и Fedora <=28, требования могут быть выполнены путем установки следующих пакетов: NetworkManager-glib, libnm-qt-devel.x86_64, nm-connection-editor.x86_64, libsemanage-python, policycoreutils-python.
  • В системах типа Ubuntu и Debian, требования могут быть выполнены путем установки следующих пакетов: network-manager, python-dbus (или python3-dbus, в зависимости от используемой версии Python), libnm-dev.
  • В более старых системах типа Ubuntu и Debian, требования могут быть выполнены путем установки следующих пакетов: network-manager, python-dbus (или python3-dbus, в зависимости от используемой версии Python), libnm-glib-dev.
  • В системах openSUSE, требования могут быть выполнены путем установки следующих пакетов: NetworkManager, python2-dbus-python (или python3-dbus-python), typelib-1_0-NMClient-1_0 и typelib-1_0-NetworkManager-1_0.

Требования

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

  • dbus
  • NetworkManager-libnm (или NetworkManager-glib в более старых системах)
  • nmcli

Параметры

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

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

  - name: Add VxLan
    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
    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
    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.

Статус

  • Отсутствие гарантии обратной совместимости интерфейса этого модуля. [превью]
  • Этот модуль поддерживается сообществом Ansible. [community]

Авторы

  • 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.9/modules/nmcli_module.html

Spec-Zone.ru

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