Spec-Zone.ru › Ansible 2.7

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

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

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

Описание

  • Управление сетевыми устройствами. Создание, изменение и управление различными типами подключений и устройств, например, ethernet, teams, bonds, vlans и т.д.
  • На системах типа 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
Используется только с мостом - [время-старения <0-1000000>] время старения адреса Ethernet MAC, в секундах
arp_interval
-
Используется только с объединением (bond) - интервал ARP
arp_ip_target
-
Используется только с объединением (bond) - целевой IP-адрес ARP
autoconnect
boolean
    Варианты:
  • нет
  • да ←
Подключиться при запуске системы.
Автоматически активировать профиль подключения
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
boolean
    Варианты:
  • нет
  • да ←
Используется только с 'bridge-slave' - 'режим hairpin' для подчиненного интерфейса, позволяющий отправлять кадры обратно через подчиненный интерфейс, на котором был принят кадр.
hellotime
-
По умолчанию:
2
Используется только с мостом - [время-hello <1-10>] время hello STP, в секундах
ifname
-
По умолчанию:
"conn_name"
Имя интерфейса.
Интерфейс для привязки подключения. Подключение будет применимо только к этому имени интерфейса.
Для интерфейс-независимых подключений можно использовать специальное значение "*".
Аргумент ifname обязателен для всех типов подключений, кроме bond, team, bridge и vlan.
ingress
-
Используется только с VLAN - отображение приоритетов входящего трафика VLAN
ip4
-
IPv4 адрес для этого интерфейса в формате: например: "192.0.2.24/24"
ip6
-
IPv6 адрес для этого интерфейса в формате: например: "abbe::cafe"
mac
-
Используется только с мостом - MAC-адрес моста (примечание: это требует новой функции ядра, первоначально введенной в ядре 3.15)
master
-
master <master (имя интерфейса, или UUID подключения или conn_name) моста, team, bond master профиль подключения.
maxage
-
По умолчанию:
20
Используется только с мостом - [максимальное-время <6-42>] максимальное время жизни сообщения STP, в секундах
miimon
-
По умолчанию:
100
Используется только с объединением (bond) - miimon
mode
-
    Варианты:
  • balance-rr ←
  • active-backup
  • balance-xor
  • broadcast
  • 802.3ad
  • balance-tlb
  • balance-alb
Тип устройства или сетевого соединения, которое вы хотите создать для объединения (bond), team или моста.
mtu
-
По умолчанию:
1500
MTU подключения, например 9000. Это нельзя применить при создании интерфейса, оно выполняется после создания интерфейса.
Можно использовать при модификации Team, VLAN, Ethernet (В будущих планах реализовать wifi, pppoe, infiniband)
path_cost
-
По умолчанию:
100
Используется только с 'bridge-slave' - [<1-65535>] - стоимость порта STP для целей через этого подчиненного интерфейса
primary
-
Используется только с объединением (bond) и является первичным именем интерфейса (для режима "active-backup"), обычно это 'ifname'
priority
-
По умолчанию:
128
Используется только с 'мостом' - устанавливает приоритет STP
slavepriority
-
По умолчанию:
32
Используется только с 'bridge-slave' - [<0-63>] - приоритет STP этого подчиненного интерфейса
state
- / обязательно
    Варианты:
  • present
  • absent
Устройство должно существовать или нет, предпринимая действия, если состояние отличается от указанного.
stp
boolean
    Варианты:
  • нет
  • да
Используется только с мостом и управляет включением протокола Spanning Tree Protocol (STP) для этого моста
type
-
    Варианты:
  • ethernet
  • team
  • team-slave
  • bond
  • bond-slave
  • bridge
  • bridge-slave
  • vlan
  • generic
Тип устройства или сетевого соединения, которое вы хотите создать или изменить.
тип generic добавлен в версии 2.5.
updelay
-
Используется только с объединением (bond) - updelay
vlandev
-
Используется только с VLAN - родительское устройство, на котором находится этот VLAN, можно использовать ifname
vlanid
-
Используется только с 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.

Статус

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

Авторы

  • Крис Лонг (@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.7/modules/nmcli_module.html

Spec-Zone.ru

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