Spec-Zone.ru › Ansible 2.5

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

Новая версия 2.0.

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

Описание

  • Управление сетевыми устройствами. Создание, модификация и управление различными типами соединений и устройств, например, Ethernet, team, bond, VLAN и т. д.
  • В системах типа CentOS и Fedora необходимо установить зависимости как «yum/dnf install -y python-gobject NetworkManager-glib»
  • В системах типа Ubuntu и Debian необходимо установить зависимости как «apt-get install -y libnm-glib-dev»

Требования

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

  • nmcli
  • dbus
  • NetworkManager-glib

Параметры

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

Примеры

# 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
    yum:
      name: '{{ item }}'
      state: installed
    with_items:
      - NetworkManager-glib
      - libnm-qt-devel.x86_64
      - nm-connection-editor.x86_64
      - libsemanage-python
      - policycoreutils-python

##### 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: 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

# To add an Ethernet connection with static IP configuration, issue a command as follows
  - nmcli:
    conn_name: my-eth1
    ifname: eth1
    type: ethernet
    ip4: 192.0.2.100/24
    gw4: 192.0.2.1
    state: present

# To add an Team connection with static IP configuration, issue a command as follows
  - 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

# Optionally, at the same time specify IPv6 addresses for the device as follows:
  - 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

# To add two IPv4 DNS server addresses:
  - nmcli:
      conn_name: my-eth1
      type: ethernet
      dns4:
        - 192.0.2.53
        - 198.51.100.53
      state: present

# To make a profile usable for all compatible Ethernet interfaces, issue a command as follows
  - nmcli:
      ctype: ethernet
      name: my-eth1
      ifname: '*'
      state: present

# To change the property of a setting e.g. MTU, issue a command as follows:
  - nmcli:
      conn_name: my-eth1
      mtu: 9000
      type: ethernet
      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–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.5/modules/nmcli_module.html

Spec-Zone.ru

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