Usando Ansible dentro do Bash

1

Eu uso o Ubuntu 18.04 com o Ansible instalado desta maneira:

apt-get update -y
install software-properties-common
apt-add-repository ppa:ansible/ansible
apt install ansible

Eu também tenho um pequeno script Bash que eu armazeno no GitHub que às vezes copio e colo no terminal de máquinas remotas que eu contratei para armazenar meus próprios sites (por enquanto eu pretendo ter apenas uma dessas máquinas remotas, não dezenas / centenas ou milhares como comuns para a maioria dos usuários Ansible).

O script

#!/bin/bash
apt-get update -y
apt-get install lamp-server^
apt-get install php-mbstring php-mcrypt php-curl php-cli php-gd
curl -sS https://getcomposer.org/installer -o composer-setup.php
php composer-setup.php --install-dir=/usr/local/bin --filename=composer

Pode-se dizer "bem, se for apenas uma máquina, não use Ansible, seria um exagero", mas ainda sinto a necessidade de automatizar isso, pois é um conjunto de comandos de instalação muito "confuso" que pode mudar "amanhã".

Meu problema

Eu não encontro literatura para explicar como eu poderia fazer as mesmas instalações, dentro do terminal Bash (digamos, copiando e colando o conjunto de comandos) mas com Ansible . Eu também comprei uma versão impressa do livro de Jeff Geerling "Ansible for Devops", mas nenhum dos capítulos básicos cobre minha necessidade particular.

Tudo que eu acho é como implantar um arquivo de playbook em uma lista de IPs, mas eu não quero usar esse modo "tradicional" para o Ansible. Eu só quero copiar um conjunto de comandos Ansible YAML do GitHub para o meu terminal.

Minha pergunta

Você sabe como eu poderia fazer isso?

    
por JohnDoea 06.11.2018 / 05:07

2 respostas

2

Basta copiar o arquivo do manual para o novo host e reproduzi-lo no host local usando as seguintes diretivas yaml:

  • hosts: 127.0.0.1 : O endereço localhost para quase qualquer máquina .
  • connection: local : uma direção yaml para o tipo de conexão; dado que trabalhamos localmente neste caso, é conceitualmente inútil, mas é tecnicamente necessário devido a como a versão atual do Ansible é construída).

Veja aqui para detalhes sangrentos.

    
por 06.11.2018 / 14:33
4

Do Ansible Docs:

    - name: Install a list of packages
apt:
    name: "{{ packages }}"
vars:
    packages:
    - foo
    - foo-tools

    - name: Download foo.conf
get_url:
    url: http://example.com/path/file.conf
    dest: /etc/foo.conf
    mode: 0440

Como isso está escrito no formato Ansible Playbook. Você precisaria escrevê-lo para um arquivo yaml e, em seguida, pode chamar o manual do seu script. Você não seria capaz de incorporar o arquivo yaml em um script bash e chamá-lo dentro do script.

    
por 06.11.2018 / 05:29