stackhpc.ansible-role-os-networks
REMARQUE :
Ce référentiel n'est plus maintenu - le rôle a été déplacé vers la collection Ansible maintenant ➡️ https://github.com/stackhpc/ansible-collection-openstack
Réseaux OpenStack
Ce rôle peut être utilisé pour enregistrer des réseaux, des sous-réseaux et des routeurs dans Neutron en utilisant les modules os_network, os_subnet et os_router.
Exigences
L'API Neutron d'OpenStack doit être accessible depuis l'hôte cible.
Variables du rôle
os_networks_venv
est un chemin vers un répertoire dans lequel créer un environnement virtuel.
os_networks_auth_type
est un type d'authentification compatible avec l'argument auth_type
des modules Ansible os_*
.
os_networks_auth
est un dictionnaire contenant des informations d'authentification compatibles avec l'argument auth
des modules Ansible os_*
.
os_networks_cacert
est un chemin optionnel vers un paquet de certificats CA.
os_networks_cloud
est un nom optionnel d'un cloud dans clouds.yaml
.
os_networks_interface
est le type d'URL de point de terminaison à récupérer dans le catalogue de services. Il peut être public
, admin
ou internal
.
os_networks
est une liste de réseaux à enregistrer. Chaque élément doit être un dictionnaire contenant les éléments suivants :
name
: Nom du réseau Neutron.provider_network_type
: Type de fournisseur du réseau Neutron.provider_physical_network
: Réseau physique fournisseur du réseau Neutron.provider_segmentation_id
: ID de segmentation fournisseur du réseau Neutron.shared
: Indique si le réseau Neutron est partagé.external
: Indique si le réseau Neutron est externe.project
: Crée éventuellement ce réseau pour un projet autre que le projet authentifiant.state
: État optionnel du réseau, par défautpresent
.mtu
: Valeur du maximum de transmission unitaire (MTU) pour éviter la fragmentation. Le réseau utilisera les valeurs par défaut d'OpenStack si cette option n'est pas fournie. Nécessite ansible >= 2.9.port_security_enabled
: Indique si la sécurité des ports est activée sur le réseau ou non. Le réseau utilisera les valeurs par défaut d'OpenStack si cette option n'est pas utilisée. Booléen, vrai pour activer, faux sinon. Nécessite ansible >= 2.8.dns_domain
: Valeur du domaine DNS à définir. Le réseau utilisera les valeurs par défaut d'OpenStack si cette option n'est pas fournie. Nécessite ansible >= 2.9.subnets
: Liste des sous-réseaux à créer dans ce réseau. Chaque élément doit être un dictionnaire contenant les éléments suivants :name
: Nom du sous-réseau Neutron.cidr
: Représentation CIDR du réseau IP du sous-réseau Neutron.dns_nameservers
: Liste des serveurs de noms DNS pour le sous-réseau.extra_specs
: Dictionnaire optionnel avec des paires clé/valeur supplémentaires passées à l'API. Nécessite ansible >= 2.7.gateway_ip
: Adresse IP de la passerelle du sous-réseau Neutron.no_gateway_ip
: Booléen optionnel, indique s'il faut omettre une adresse IP de passerelle. Si non défini, cela seratrue
sigateway_ip
est spécifié, etfalse
sinon.enable_dhcp
: Indique s'il faut activer DHCP sur le sous-réseau.allocation_pool_start
: Début du pool d'attribution IP du sous-réseau Neutron.allocation_pool_end
: Fin du pool d'attribution IP du sous-réseau Neutron.host_routes
: Liste de routes statiques sans classe à fournir aux hôtes connectés à ce sous-réseau. Une liste de dictionnaires avecdestination
(réseau de destination en codage CIDR) etnexthop
(adresse IP du routeur sur ce sous-réseau) doit être fournie.ip_version
: Version IP optionnelle pour le sous-réseau.ipv6_address_mode
: Mode d'adresse IPv6 optionnel pour le sous-réseau.ipv6_ra_mode
: Mode de publicité de routeur IPv6 optionnel pour le sous-réseau.use_default_subnetpool
: Booléen optionnel, indique s'il faut utiliser le pool de sous-réseaux par défaut pour la version IP.project
: Crée éventuellement ce sous-réseau pour un projet autre que le projet authentifiant.state
: État optionnel du sous-réseau, par défautpresent
.
os_networks_routers
est une liste de routeurs à créer. Chaque élément doit être un dictionnaire contenant les éléments suivants :
name
: Nom du routeur Neutron.interfaces
: Liste des noms de sous-réseaux à attacher à l'interface interne du routeur.network
: Nom ou ID unique du réseau de passerelle externe.external_fixed_ips
: Liste optionnelle de paramètres d'adresse IP pour le réseau de passerelle externe. Chacun est un dictionnaire avec le nom du sous-réseau ou l'ID du sous-réseau et l'adresse IP à attribuer sur le sous-réseau.project
: Crée éventuellement ce routeur pour un projet autre que le projet authentifiant.state
: État optionnel du routeur, par défautpresent
.
os_networks_security_groups
: Liste des groupes de sécurité à créer. Chaque élément doit être un dictionnaire contenant les éléments suivants :
name
: Nom du groupe de sécurité.description
: Description optionnelle du groupe de sécurité.project
: Projet optionnel dans lequel enregistrer le groupe de sécurité.state
: État optionnel du groupe de sécurité, par défautpresent
.rules
: Liste optionnelle de règles à ajouter au groupe de sécurité. Chaque élément doit être un dictionnaire contenant les éléments suivants :direction
: Direction optionnelle de la règle, par défautingress
.ethertype
: Ethertype optionnelle de la règle, par défautIPv4
.port_range_min
: Port de départ optionnel.port_range_max
: Port de fin optionnel.protocol
: Protocole IP optionnel de la règle.remote_group
: Nom ou ID optionnel du groupe de sécurité à lier.remote_ip_prefix
: Préfixe d'adresse IP source optionnel en notation CIDR.state
: État optionnel de la règle, par défautpresent
.
os_networks_rbac
est une liste de contrôles d'accès basés sur les rôles pour des réseaux et projets nommés. Voir le guide de l'administrateur RBAC Neutron pour plus de détails. Chaque entrée de la liste est un dictionnaire contenant les éléments suivants :
network
: Le nom du réseau à partager. Ce réseau est normalement détenu par le projetadmin
et n'est passhared
ouexternal
.access
: Le mode de partage avec le(s) projet(s) cible(s). Les options valides sontaccess_as_external
etaccess_as_shared
.projects
: Liste des noms de projets pour partager le réseau nommé de la manière désignée.
REMARQUE : Les attributions RBAC ne peuvent pas être modifiées après leur création.
Dépendances
Ce rôle dépend du rôle stackhpc.os_openstacksdk
.
Exemple de Playbook
Le playbook suivant enregistre un réseau Neutron, un sous-réseau et un routeur. Une route statique sans classe est définie pour accéder à un autre sous-réseau par le biais d'une passerelle différente.
---
- name: Assurer que les réseaux, sous-réseaux et routeurs sont enregistrés
hosts: neutron-api
roles:
- role: os-networks
os_networks_venv: "~/os-networks-venv"
os_networks_auth_type: "password"
os_networks_auth:
project_name: <projet keystone>
username: <utilisateur keystone>
password: <mot de passe keystone>
auth_url: <URL d'authentification keystone>
os_networks:
- name: net1
provider_network_type: vlan
provider_physical_network: physnet1
provider_segmentation_id: 1234
shared: true
external: false
subnets:
- name: subnet1
cidr: 10.0.0.0/24
gateway_ip: 10.0.0.1
allocation_pool_start: 10.0.0.2
allocation_pool_end: 10.0.0.254
host_routes:
- destination: 10.0.1.0/24
nexthop: 10.0.0.254
os_networks_routers:
- name: router1
interfaces:
- subnet1
network: net1
os_networks_security_groups:
- name: secgroup1
rules:
- protocol: icmp
Informations sur l'auteur
- Mark Goddard (mark@stackhpc.com)
Role to register networks, subnets and routers in OpenStack
ansible-galaxy install stackhpc.ansible-role-os-networks