A estrutura das funções em Ansible nos permite importar parâmetros específicos automaticamente, ações, documentos, scripts e controladores que são baseados de acordo com um formato de documento predefinido no Ansible. O principal método para particionar um manual em muitos documentos é o papel. Facilita a criação de manuais complicados e também facilita como vamos reutilizá -los em Ansible. Ao dividir o manual, você pode separá -lo em várias partes reutilizáveis. Portanto, todo papel é restrito a um recurso específico ou resultados pretendidos. Cada um dos procedimentos, necessário para chegar a conclusão que estava sendo mantido dentro desse papel em particular, é definido como dependentes em outras funções.
Estrutura dos papéis em Ansible
Agora, vamos entender a estrutura básica dos papéis Ansible. Para utilizar papéis em Ansible, criaremos um novo diretório com a identidade exata de cada função. Na hierarquia do papel, os documentos são organizados de maneira subdiretória. Para criar o diretório, empregaremos o seguinte comando Ansible-Galaxy Role:
[root@master Ansible]# Ansible-Galaxy init win_package_install_role
Depois de executar o comando acima, obteremos o seguinte resultado desejado:
- Função win_package_install_role foi criado com sucesso
Como o próprio Ansible-Galaxy está incluído na ferramenta Ansible, não precisamos instalar mais componentes para isso. Se você deseja verificar a estrutura hierárquica da função e vários diretórios com layout modificável, os documentos serão exibidos após a execução do comando abaixo:
[root@master Ansible]# árvore win_package_install_role
Como mostrado, agora temos um total de 8 diretórios disponíveis no papel chamado "win_package_install_role" e 8 documentos mutáveis.
Às vezes, precisamos atualizar documentos como ReadMe.MD e Meta/Main.YML para descrever corretamente seu papel, mesmo que não seja necessário que o papel funcione. É essencial incluir quaisquer requisitos em meta/principal.YML se a função precisar acessar funções adicionais para executar. Isso permitirá que o Ansible faça isso conforme necessário. Para entrar no novo diretório, que criamos recentemente, escreveremos a declaração abaixo no terminal.
[root@master Ansible]# CD win_package_install_role
Em seguida, ele mostrará o novo diretório adicionado ao caminho principal mostrado abaixo:
[root@master Ansible] ~/win_package_install_role#
Não há pré -requisitos necessários para o seu papel win_package_install_role. Um formato de meta-arquivo em funcionamento é mostrado aqui como um exemplo. Se você deseja alterá -lo para refletir seu nome, o nome da sua empresa e, se apropriado, também altere a licença escrevendo o seguinte comando:
[root@master Ansible] ~/win_package_install_role# nano meta/main.yml
Especificando as tarefas de papel em Ansible
Na maioria das vezes, o papel realizaria uma ou mais atividades para configurar o dispositivo remoto sob os critérios da função. Instalar e configurar Win_package_install_role é o que devemos fazer nesta situação.
win_package_install_role /tarefas /main.YML:
Quando desempenhamos uma função, ele pesquisa por padrão a subpasta "tarefas" para um documento chamado main.YML e então listaremos todas as tarefas. Para papéis mais complexos, você pode dividir as tarefas em vários documentos e chamá -los de Main.YML usando as tarefas de inclusão ou módulos de tarefas de importação. Abaixo está o comando que usaremos para entrar no diretório da tarefa.
# Tasks Arquivo para win_package_install_role
- Nome: buscar product_name status de instalação
win_shell: 'get-itemproperty hklm: \ software \ wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall \* | Onde -object -Property DisplayName -Like "*Product_name*" | Format Table IdentificationNumber, Name, DisplayName, LocalPackage -aUtosize '
Registro: instalação_status
- depurar:
msg:
- "Produto já instalado"
- "instalação_status.stdout_lines "
Quando: instalação_status.stdout_lines é definido e instalação_status.stdout_lines | comprimento> 0
- Meta: end_play
Quando: instalação_status.stdout_lines é definido e instalação_status.stdout_lines | comprimento> 0
- Nome: Crie diretório de destino, se não existe
win_file:
caminho: "Target_machine_path"
Estado: Diretório
- Nome: Baixe o instalador
win_get_url:
url: "url_to_download_setup"
dest: "Target_machine_path"
Registro: Download
Quando: url_to_download_setup é definido e url_to_download_setup !"" "
- set_fact:
package_name_zip: "download.dest "
Quando: download.falhou == false
- Nome: descomprimir o pacote
win_unzip:
src: "package_name_zip"
dest: "Target_machine_path"
Delete_archive: Sim
Registro: descompress_status
Quando: (package_name_zip é definido) e (".zip "In package_name_zip ou".gz "em package_name_zip ou".gz "em package_name_zip)
- Nome: Encontre localização do arquivo de configuração
win_find:
Caminhos: "Target_machine_path"
Padrões: ["setup_name"]
Recurse: Verdadeiro
registro: resultado
- Nome: Configurando o caminho de configuração para o pacote Windows fornecido
set_fact:
setup_path: "resultado.Arquivos [0].caminho"
Quando: resultado.falhou == Falso e resultado.correspondente> 0
- Nome: Instalando "setup_name"
win_package:
caminho: "setup_path"
Product_id: Auto
Estado: presente
argumentos: /q
registro: status
- depurar:
msg: "setup_name instalado com sucesso"
Quando: status.rc == 0
- set_fact:
reboot_required: true
Quando: status.reboot_required é definido e status.reboot_required
notificar:
- Reinicie o servidor Windows
Neste documento, realizamos tarefas como recuperamos o nome do produto. Fizemos um diretório de destino se o diretório não estiver disponível. Temos que baixar o URL, descompactar o pacote, encontrar a localização da configuração e também definimos o local para o pacote de janelas, etc.
win_package_install_role /default /main.YML:
Os parâmetros padrão são definidos dentro do diretório padrão. Os parâmetros padrão são aqueles com o máximo significado, tornando -os simples de modificar. O parâmetro definido nos padrões/principal.YML seria utilizado se não for definido em nenhum lugar.
---
# Arquivo padrão para win_package_install_role
Target_machine_path: C: \ Programfiles
win_package_install_role /var /main.YML:
Para especificar os parâmetros necessários para a função, construímos um documento Var nesta etapa. Para evitar qualquer disputa de título com parâmetros de fora da função, é uma opção inteligente que prefixaremos os identificadores dos parâmetros de função.
# Arquivo VARS para win_package_install_role
url_to_download_setup: https: // arquivamento.apache.org/dist/httpd/binários/win32/httpd-2.2.25-WIN32-X86-NO_SSL.msi
Product_name: Apache
setup_name: httpd-2.2.25-WIN32-X86-NO_SSL.msi
Target_machine_path: C: \ instaladores
win_package_install_role /manipuladores /main.YML:
Os manipuladores do Ansible serão armazenados dentro do diretório do manipulador. As tarefas no documento são conhecidas como manipuladores que podem ser marcados ao longo de uma peça para execução depois que terminar. Poderíamos empregar manipuladores como considerarmos necessário.
# manipuladores arquivos para win_package_install_role
- Nome: reinicie o servidor Windows
win_reboot:
Quando: reboot_required
win_package_install_role /meta /main.YML:
Uma vez decidimos transmitir o papel na galáxia.Ansible.com, utilizaremos o meta diretório para conter metadados do autor. Informações de função Ansible incluem o editor, que é "Kalsoom", apoiando sistemas e dependentes.
galaxy_info:
Autor: Kalsoom
Descrição: Instale o pacote Windows fornecido
Empresa: Ng Pvt Ltd
Licença: Licença (GPL-2.0-ou-Later, MIT, etc)
min_ansible_version: "2.9 "
plataformas:
- Nome: Windows
Criando role_main.Playbook YML:
Neste manual, passaremos o nome do papel que criamos inicialmente junto com o host. Também reuniremos as informações relacionadas aos hosts. A seguir, é apresentado o comando usado para criar o manual em Ansible:
[root@master Ansible]# nano role_main.yml
Todos:
anfitriões:
Windows_host:
Ansible_host: 192.168.5.220
Ansible_user: Ansible
Ansible_password: ******
Ansible_Connection: WinRM
Ansible_port: 5986
Ansible_winrm_server_cert_validation: ignore
Depois disso, agora executaremos a declaração para obter a saída desejada no terminal:
[root@master Ansible]# Ansible-playbook role_main.yml -i host.yml
Conclusão
O conceito de papéis e como construir um papel em Ansible foi abordado neste artigo. A estrutura hierárquica dos papéis também foi coberta. Todo diretório que foi armazenado sob o papel foi explicado em detalhes. Para compreender como as funções são usadas em Ansible, também desenvolvemos um exemplo.