Funções Ansible - a melhor maneira de desembaraçar seus Playbooks



Este blog de Ansible Roles fala sobre como as funções são usadas para tornar manuais complexos legíveis e reutilizáveis ​​com a demonstração de configuração de uma pilha MEAN.

O Ansible nos permite automatizar o gerenciamento de configuração de sistemas e adicionar qualquer número de clientes que desejarmos. Você já se perguntou como isso pode ficar complexo? Você já se perguntou quanto tempo e confusos os manuais podem ficar? Como Ansible ainda faz com que pareça uma brisa? Ele usa o conceito de Ansible Roles e é sobre isso que falaremos neste blog.

Assuntos abordados:





Se você deseja dominar DevOps, ' o curso seria sua opção preferida.

Introdução às funções de Ansible

O Papel Ansible é um conceito que lida com ideias em vez de eventos. É basicamente outro nível de abstração usado para organizar manuais. Eles fornecem um esqueleto para uma coleção independente e reutilizável de variáveis, tarefas, modelos, arquivos e módulos que podem ser carregados automaticamente no manual. Os manuais são uma coleção de funções. Cada função tem uma funcionalidade específica.



Deixe-me explicar isso com um exemplo. Suponha que você queira que seu manual execute 10 tarefas diferentes em 5 sistemas diferentes. Você usaria um único manual para isso? Não, usar um único manual pode torná-lo confuso e sujeito a erros graves. Em vez disso, você pode criar 10 funções diferentes, onde cada função executará uma tarefa. Então, tudo que você precisa fazer é mencionar o nome da função dentro do manual para chamá-los. Você aprenderá como usar funções mais adiante neste blog.

Reutilização de funções Ansible

As funções Ansible são independentes umas das outras. A execução de uma função não depende de outras e, portanto, podem ser reutilizados. Você pode até mesmo modificar e personalizar essas funções de acordo com seus requisitos. Isso reduz nossa tarefa de reescrever uma seção inteira de código sempre que precisamos, simplificando nosso trabalho.

Vamos voltar ao exemplo anterior. Você escreveu 10 funções e agora precisa usar 5 delas para outro conjunto de provisionamento. Você escreve o manual inteiro de novo? Não, você apenas reutiliza essas 5 funções chamando-as neste novo Manual. Você também pode fazer modificações, se necessário, mas ainda assim economizando muito tempo.



Digamos que você precise escrever um manual para configurar a pilha LAMP. Você deve criar 4 funções, cada uma para a criação de Linux, Apache, MongoDB e PHP. No futuro, se você quiser outro manual para configurar a pilha LAMP, bem como WordPress, você criará novamente novas funções para a pilha LAMP e WordPress? Não! Você pode simplesmente reutilizar as funções mais antigas (usadas para a pilha LAMP) e, adicionalmente, criar uma nova função para o WordPress.

Estrutura do diretório de funções

Usando Ansible Roles, espere que os arquivos estejam em uma determinada estrutura de arquivos. A parte mais confusa do uso de funções é entender a hierarquia de arquivos. O Ansible fornece um recurso chamado Ansible Galaxy que o ajuda a desempenhar as funções. Já sabemos onde está nosso Ansible no Ubuntu (/ etc / ansible). Você já viu um diretório chamado roles em / etc / ansible? Esse diretório existe exatamente por esse motivo. Você cria funções diferentes dentro deste diretório.

O diretório será semelhante a este:

Árvore - Papéis Ansible - Edureka

Você pode criar uma função usando ansible-galáxia comando init dentro de / etc / ansible / roles.

$sudoansible-galaxy init

Você verá que outros diretórios de funções também foram criados.

Esses diretórios são tarefas, manipuladores, padrões, vars, arquivos, modelos e meta e um README.mdArquivo.

def __init __ (self):

Tarefas - Contém a lista principal de tarefas que devem ser executadas pela função. istocontémo arquivo main.yml para essa função específica.

Handlers - Contém manipuladores que podem ser usados ​​por esta função ou mesmo em qualquer lugar fora dela.

Padrões - Contém as variáveis ​​padrão que serão usadas por esta função.

De quem - Este diretório consiste em outras variáveis ​​que serão usadas pela função. Essas variáveis ​​podem ser definidas em seu manual, mas é um bom hábito defini-las nesta seção.

arquivos - Contém arquivos que podem ser implantados por esta função. Ele contém arquivos que precisam ser enviados aos hosts durante a configuração da função.

Meta - Define metadados para esta função. Basicamente, ele contém arquivos que estabelecem dependências de funções.

Cada tarefa diretório deve consistir em um main.yml arquivo onde o código real para aquela função específica é escrito.

Agora vamos entender o funcionamento ou funções com uma demonstração de instalação do MEAN Stack.

Demo: Instalando MEAN Stack usando Ansible Roles

Estarei demonstrando como instalar o MEAN Stack usando Ansible Roles executando apenas um único manual. Teremos três funções: 1) Pré-requisitos de instalação, 2) Instalação do MongoDB e 3) Instalação do NodeJS. Estou supondo que você já instalou o Ansible e fez uma conexão servidor-cliente no Ubuntu . Vamos começar a brincar com os papéis de Ansible.

Passo 1 - Navegue até o diretório / etc / ansible / roles e crie as funções para os pré-requisitos, MongoDB e NodeJS.

$ cd / etc / ansible / roles $ sudo ansible-galaxy init pré-requisitos $ sudo ansible-galaxy init mongodb $ sudo ansible-galaxy init nodejs

Agora você deve ver três funções em seu diretório de ‘funções’.

Passo 2 - Escreva main.yml para os pré-requisitos de instalação do Git.

Sql Server Integration Services ssis tutorial passo a passo
$ cd prerequisites / tasks / main.yml --- - name: Instale git apt: name: git state: present update_cache: yes

etapa 3 - Escreva main.yml para a função MongoDB

$ cd /mongodb/tasks/main.yml --- - nome: MongoDB - Importar chave pública apt_key: keyserver: hkp: //keyserver.ubuntu.com: 80 id: EA312927 - nome: MongoDB - Adicionar repositório apt_repository: filename: '/etc/apt/sources.list.d/mongodb-org-3.2.list' repo: 'deb http://repo.mongodb.org/apt/ubuntu trusty / mongodb-org / 3.2 multiverse' estado: presente update_cache : sim - nome: MongoDB - Instalar MongoDB apt: nome: mongodb-org estado: presente update_cache: sim - nome: Iniciar shell mongod: 'mongod &'

Passo 4 - Escreva main.yml paranodejsFunção

$ cd nodejs / tasks / main.yml --- - name: Node.js - Get script get_url: url: 'http://deb.nodesource.com/setup_6.x' dest: '{{var_node}} / nodejs .sh '- nome: Node.js - Definir permissão de execução para o arquivo de script: caminho:' {{var_node}} / nodejs.sh 'modo:' u + x '- nome: Node.js - Executar shell do script de instalação:' {{var_node}} / nodejs.sh '- nome: Node.js - Remover arquivo de script de instalação: caminho:' {{var_node}} / nodejs.sh 'estado: ausente - nome: Node.js - Instalar Node.js apt : name = {{item}} state = present update_cache = yes with_items: - build-essential - nodejs - name: Node.js - Instale bower e gulp globalmente npm: name = {{item}} state = present global = yes with_items : - caramanchão - gole

Etapa 5 - Escreva seu manual principal

$ cd /etc/ansible/mean.yml --- - hosts: nodes remote_user: ansible torne-se: sim torne-se_metodo: sudo vars: #variable necessário durante a instalação do nó var_node: / tmp roles: - pré-requisitos - mongodb - nodejs

Agora que definimos funções para instalar os pré-requisitos, MongoDB e NodeJs, vamos implantá-los. Execute o manual usando o seguinte comando.

$sudoansible-playbook /etc/ansible/mean.yml -K

Como você pode ver, todas as tarefas foram executadas e seu status mudou. Isso significa que as alterações do manual foram aplicadas ao seu servidor e também ao host. Configurar o MEAN Stack é apenas um exemplo. Você pode configurar literalmente tudo e qualquer coisa usando Ansible Roles.

Isso nos leva ao final do blog Ansible Roles. Se você achar este artigo útil, verifique o ' oferecido pela Edureka. Abrange todas as ferramentas que tornaram o setor de TI melhor.

Tem alguma questão para nós? Por favor, poste em e entraremos em contato com você.