Spec-Zone.ru › Ansible 2.6

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
Используется только с мостом - [ageing-time <0-1000000>] время старения MAC-адреса Ethernet в секундах
arp_interval
Используется только с bond - интервал ARP
arp_ip_target
Используется только с bond - целевой IP-адрес ARP
autoconnect
bool
    Варианты:
  • no
  • да ←
Необходимо ли подключаться при запуске системы.
Можно ли автоматически активировать профиль подключения
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
Используется только с мостом - [forward-delay <2-30>] задержка пересылки STP в секундах
gw4
IPv4 шлюз для этого интерфейса в формате: "192.0.2.1"
gw6
IPv6 шлюз для этого интерфейса в формате: "2001:db8::1"
hairpin
bool
    Варианты:
  • no
  • да ←
Используется только с 'bridge-slave' - режим 'hairpin' для подчиненного интерфейса, который позволяет отправлять пакеты обратно через подчиненный интерфейс, на котором был получен пакет.
hellotime Значение по умолчанию:
2
Используется только с мостом - [hello-time <1-10>] время приветствия 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 upstream)
master
master <мастер (имя_интерфейса, или UUID подключения или имя_подключения) моста, команды, bond или мастера подключения профиля.
maxage Значение по умолчанию:
20
Используется только с мостом - [max-age <6-42>] максимальный возраст сообщения STP в секундах
miimon Значение по умолчанию:
100
Используется только с bond - miimon
mode
    Варианты:
  • баланс-rr ←
  • активный-резервный
  • баланс-xor
  • вещательный
  • 802.3ad
  • баланс-tlb
  • баланс-alb
Тип устройства или сетевого подключения, который вы хотите создать для bond, team или bridge.
mtu Значение по умолчанию:
1500
MTU подключения, например, 9000. Это нельзя применить при создании интерфейса, а делается после создания интерфейса.
Может использоваться при изменении Team, VLAN, Ethernet (в будущих планах реализовать wifi, pppoe, infiniband)
path_cost Значение по умолчанию:
100
Используется только с 'bridge-slave' - [<1-65535>] - стоимость порта STP для назначения через этот подчиненный интерфейс
primary
Используется только с bond и представляет собой имя основного интерфейса (для режима «активный-резервный»), обычно это ‘ifname’
priority Значение по умолчанию:
128
Используется только с 'bridge' - устанавливает приоритет STP
slavepriority Значение по умолчанию:
32
Используется только с 'bridge-slave' - [<0-63>] - приоритет STP этого подчиненного интерфейса
state
обязательно
    Варианты:
  • present
  • absent
Устройство должно существовать или нет, принимая действия, если состояние отличается от указанного.
stp
bool
    Варианты:
  • no
  • yes
Используется только с мостом и управляет тем, включён ли протокол Spanning Tree Protocol (STP) для этого моста
type
    Варианты:
  • ethernet
  • team
  • team-slave
  • bond
  • bond-slave
  • bridge
  • bridge-slave
  • vlan
  • generic
Тип устройства или сетевого подключения, которое вы хотите создать или изменить.
type 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.

Статус

Этот модуль помечен как preview, что означает, что его интерфейс не гарантируется как обратный.

Техническое обслуживание

Этот модуль помечен как community, что означает, что он поддерживается сообществом Ansible. См. Техническое обслуживание и поддержка модуля для получения дополнительной информации.

Список других модулей, поддерживаемых сообществом Ansible, см. здесь.

Автор

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

Spec-Zone.ru

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