Spec-Zone.ru › Ansible 2.4

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

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

  • Обзор
  • Требования (к хосту, на котором выполняется модуль)
  • Параметры
  • Примеры
    • Статус

Обзор

  • Управление сетевыми устройствами. Создание, изменение и управление Ethernet, командами, связками, VLAN и т. д.

Требования (к хосту, на котором выполняется модуль)

  • nmcli
  • dbus
  • NetworkManager-glib

Параметры

Параметр Обязательный По умолчанию Варианты Комментарии
ageingtime
нет 300
Используется только с мостом - [ageing-time <0-1000000>] Время старения MAC-адреса Ethernet в секундах
arp_interval
нет Нет
Используется только со связкой - интервал ARP
arp_ip_target
нет Нет
Используется только со связкой - целевой IP-адрес ARP
autoconnect
нет да
  • да
  • нет
Подключаться ли при загрузке.
Можно ли автоматически активировать профиль подключения
conn_name
да
Имя подключения. Если не указано, генерируется имя по умолчанию: <тип>[-<имя_интерфейса>][-<номер>]
dns4
нет Нет
Список до 3 DNS-серверов в формате IPv4, например: Чтобы добавить два IPv4 адреса DNS-серверов: "192.0.2.53 198.51.100.53"
dns6
нет
Список до 3 DNS-серверов в формате IPv6, например: Чтобы добавить два IPv6 адреса DNS-серверов: "2001:4860:4860::8888 2001:4860:4860::8844"
downdelay
нет Нет
Используется только со связкой - 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
нет True
Используется только с '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)
master
нет Нет
master <master (имя_интерфейса, или UUID подключения или имя_подключения) моста, команды, связи, мастер-профиль подключения.
maxage
нет 20
Используется только с мостом - [max-age <6-42>] Максимальный возраст сообщения STP в секундах
miimon
нет 100
Используется только со связкой - miimon
mode
нет balence-rr
  • balance-rr
  • active-backup
  • balance-xor
  • broadcast
  • 802.3ad
  • balance-tlb
  • balance-alb
Тип устройства или сетевого соединения, которое вы хотите создать для связки, команды или моста.
mtu
нет 1500
MTU соединения, например, 9000. Это нельзя применить при создании интерфейса и выполняется после создания интерфейса.
Можно использовать при изменении команды, VLAN, Ethernet (в будущем планируется реализовать wifi, pppoe, infiniband)
path_cost
нет 100
Используется только с 'bridge-slave' - [<1-65535>] - стоимость порта STP для адресатов через этот подчиненный интерфейс
primary
нет Нет
Используется только со связкой и представляет собой имя первичного интерфейса (для режима "active-backup"), обычно это 'ifname'
priority
нет 128
Используется только с 'bridge' - устанавливает приоритет STP
slavepriority
нет 32
Используется только с 'bridge-slave' - [<0-63>] - приоритет STP этого подчиненного интерфейса
state
да
  • present
  • absent
Существование устройства, выполнение действий, если состояние отличается от заявленного.
stp
нет Нет
Используется только с мостом и управляет включением протокола Spanning Tree Protocol (STP) для этого моста
type
нет
  • ethernet
  • team
  • team-slave
  • bond
  • bond-slave
  • bridge
  • vlan
Тип устройства или сетевого подключения, которое вы хотите создать или изменить.
updelay
нет Нет
Используется только со связкой - 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

# Exit Status's:
#     - nmcli exits with status 0 if it succeeds, a value greater than 0 is
#     returned if an error occurs.
#     - 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 и Разработка модулей.

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.4/nmcli_module.html

Spec-Zone.ru

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