Usando complementos de inventario de Ansible Content Collections en Ansible Tower

Os contornos informáticos son cada vez máis complexos. Nestas condicións, é fundamental que o sistema de automatización informática dispoña de información actualizada sobre os nodos que están presentes na rede e obxecto de tratamento. Na plataforma Red Hat Ansible Automation, este problema resólvese a través do chamado inventario (inventario) – listas de nodos xestionados.

Usando complementos de inventario de Ansible Content Collections en Ansible Tower

Na súa forma máis sinxela, o inventario é un ficheiro estático. Isto é ideal cando comezas a traballar con Ansible, pero a medida que aumenta a automatización, faise insuficiente.

E é por iso que:

  1. Como actualizar e manter unha lista completa de nós monitorizados cando as cousas están a cambiar constantemente, cando as cargas de traballo e, posteriormente, os nodos nos que se executan, veñen e van?
  2. Como clasificar os compoñentes da infraestrutura de TI para seleccionar especificamente os nodos para aplicar unha automatización particular?

O inventario dinámico ofrece respostas a estas dúas preguntas (inventario dinámico) – un script ou complemento que busca nodos para ser automatizados, facendo referencia á fonte da verdade. Ademais, o inventario dinámico clasifica automaticamente os nós en grupos para que poida seleccionar con máis precisión os sistemas de destino para realizar a automatización específica de Ansible.

Complementos de inventario darlle ao usuario de Ansible a posibilidade de acceder a plataformas externas para buscar de forma dinámica nodos de destino e utilizar estas plataformas como fonte de verdade ao crear un inventario. A lista estándar de fontes en Ansible inclúe plataformas na nube AWS EC2, Google GCP e Microsoft Azure, e tamén hai moitos outros complementos de inventario para Ansible.

Ansible Tower vén cunha serie de plugins de inventario, que funcionan desde o primeiro momento e, ademais das plataformas en nube enumeradas anteriormente, ofrecen integración con VMware vCenter, Red Hat OpenStack Platform e Red Hat Satellite. Para estes complementos, só tes que proporcionar as credenciais para conectarte á plataforma de destino, despois de que se poidan usar como fonte de datos de inventario en Ansible Tower.

Ademais dos complementos estándar incluídos con Ansible Tower, hai outros complementos de inventario compatibles coa comunidade Ansible. Coa transición a Coleccións de contido Red Hat Ansible estes complementos comezaron a incluírse nas coleccións correspondentes.

Nesta publicación, tomaremos un exemplo de traballo co complemento de inventario para ServiceNow, unha popular plataforma de xestión de servizos de TI na que os clientes adoitan almacenar información sobre todos os seus dispositivos na CMDB. Ademais, a CMDB pode conter contexto útil para a automatización, como información sobre os propietarios do servidor, niveis de servizo (produción/non produción), actualizacións instaladas e ventás de mantemento. O complemento de inventario de Ansible pode funcionar con ServiceNow CMDB e forma parte da colección servizo agora no portal galaxy.ansible.com.

Repositorio Git

Para usar un complemento de inventario dunha colección en Ansible Tower, debe establecerse como fonte do proxecto. En Ansible Tower, un proxecto é unha integración con algún tipo de sistema de control de versións, como un repositorio git, que se pode usar para sincronizar non só libros de xogos de automatización, senón tamén variables e listas de inventario.

O noso repositorio é realmente moi sinxelo:

├── collections
│   └── requirements.yml
└── servicenow.yml

O ficheiro servicenow.yml contén detalles para o inventario de complementos. No noso caso, simplemente especificamos a táboa no ServiceNow CMDB que queremos usar. Tamén establecemos os campos que se engadirán como variables de nodo, ademais de certa información sobre os grupos que queremos crear.

$ cat servicenow.yml
plugin: servicenow.servicenow.now
table: cmdb_ci_linux_server
fields: [ip_address,fqdn,host_name,sys_class_name,name,os]
keyed_groups:
  - key: sn_sys_class_name | lower
	prefix: ''
	separator: ''
  - key: sn_os | lower
	prefix: ''
	separator: ''

Teña en conta que isto non especifica a instancia de ServiceNow á que nos conectaremos de ningún xeito e non especifica ningunha credencial para a conexión. Configuraremos todo isto máis adiante en Ansible Tower.

Coleccións de ficheiros/requisitos.yml necesario para que Ansible Tower poida descargar a colección necesaria e, así, obter o complemento de inventario necesario. En caso contrario, teriamos que instalar e manter esta colección manualmente en todos os nosos nodos da Torre Ansible.

$ cat collections/requirements.yml
---
collections:

- name: servicenow.servicenow

Unha vez que levamos esta configuración ao control de versións, podemos crear un proxecto en Ansible Tower que faga referencia ao repositorio correspondente. O seguinte exemplo enlaza Ansible Tower ao noso repositorio github. Preste atención ao URL de SCM: permítelle rexistrar unha conta para conectarse a un repositorio privado, así como especificar unha rama, etiqueta ou compromiso específicos para comprobar.

Usando complementos de inventario de Ansible Content Collections en Ansible Tower

Creando credenciais para ServiceNow

Como se mencionou, a configuración do noso repositorio non contén credenciais para conectarse a ServiceNow e non especifica a instancia de ServiceNow coa que nos comunicaremos. Polo tanto, para configurar estes datos, crearemos credenciais en Ansible Tower. Dacordo con Documentación do complemento de inventario de ServiceNow, hai unha serie de variables de ambiente coas que estableceremos os parámetros de conexión, por exemplo, como esta:

= username
    	The ServiceNow user account, it should have rights to read cmdb_ci_server (default), or table specified by SN_TABLE

    	set_via:
      	env:
      	- name: SN_USERNAME

Neste caso, se a variable de ambiente SN_USERNAME está definida, o complemento de inventario empregaraa como conta para conectarse a ServiceNow.

Tamén necesitamos establecer as variables SN_INSTANCE e SN_PASSWORD.

Non obstante, non hai credenciais deste tipo en Ansible Tower onde poidas especificar estes datos para ServiceNow. Pero Ansible Tower permítenos definir tipos de credenciais personalizados, podes ler máis sobre isto no artigo "Ansible Tower Feature Spotlight: Credenciais personalizadas".

No noso caso, a configuración de entrada para as credenciais personalizadas para ServiceNow ten o seguinte aspecto:

fields:
  - id: SN_USERNAME
	type: string
	label: Username
  - id: SN_PASSWORD
	type: string
	label: Password
	secret: true
  - id: SN_INSTANCE
	type: string
	label: Snow Instance
required:
  - SN_USERNAME
  - SN_PASSWORD
  - SN_INSTANCE

Estas credenciais serán expostas como variables de ambiente co mesmo nome. Isto descríbese na configuración do inxector:

env:
  SN_INSTANCE: '{{ SN_INSTANCE }}'
  SN_PASSWORD: '{{ SN_PASSWORD }}'
  SN_USERNAME: '{{ SN_USERNAME }}'

Entón, definimos o tipo de credencial que necesitamos, agora podemos engadir unha conta ServiceNow e configurar a instancia, o nome de usuario e o contrasinal, así:

Usando complementos de inventario de Ansible Content Collections en Ansible Tower

Creamos inventario

Entón, agora estamos todos preparados para crear un inventario en Ansible Tower. Chamémoslle ServiceNow:

Usando complementos de inventario de Ansible Content Collections en Ansible Tower

Despois de crear o inventario, podemos achegarlle unha fonte de datos. Aquí especificamos o proxecto que creamos anteriormente e introducimos a ruta do noso ficheiro de inventario YAML no repositorio de control de fonte, no noso caso é servicenow.yml na raíz do proxecto. Ademais, debes vincular a túa conta de ServiceNow.

Usando complementos de inventario de Ansible Content Collections en Ansible Tower

Para comprobar como funciona todo, intentemos sincronizar coa fonte de datos facendo clic no botón "Sincronizar todo". Se todo está configurado correctamente, os nodos deben importarse ao noso inventario:

Usando complementos de inventario de Ansible Content Collections en Ansible Tower

Teña en conta que tamén se crearon os grupos que necesitamos.

Conclusión

Nesta publicación, analizamos como usar complementos de inventario de coleccións en Ansible Tower usando o complemento ServiceNow como exemplo. Tamén rexistramos credenciais de forma segura para conectarnos á nosa instancia de ServiceNow. A vinculación dun complemento de inventario dun proxecto non só funciona con complementos de terceiros ou personalizados, senón que tamén se pode usar para modificar o funcionamento dalgúns inventarios estándar. Isto fai que Ansible Automation Platform sexa doado e sinxelo de integrar coas ferramentas existentes ao automatizar contornas informáticas cada vez máis complexas.

Podes atopar máis información sobre os temas tratados nesta publicación, así como outros aspectos do uso de Ansible, aquí:

*Red Hat non garante que o código aquí contido sexa correcto. Todos os materiais ofrécense sen aval, salvo que se indique expresamente o contrario.

Fonte: www.habr.com

Engadir un comentario