Ansible
Introducción a Ansible
- Ansible es una herramienta de implementación de código abierto
- Basado en el
Python
desarrollo
- Características: protocolo SSH; plataforma completa; no requiere compilación; gestión de implementación modular
- Rol: Push Plakbook para la implementación rápida de nodos remotos
Ansible es diferente de Chef y Saltstack
Cocinero
- Lenguaje rubí
- Arquitectura CS
- La configuración requiere dependencias de Git
- La especificación de escritura de script Rrcipe requiere experiencia en programación
sal Pila
- Lenguaje Python
- Arquitectura CS
- Gestión de configuración modular.
- Especificación de escritura de script Yaml
- Adecuado para despliegue de clúster a gran escala
Ansible
- Basado en Python
- Ningún cliente
- Gestión modular
- Especificación de scripts de Playbook
- Fácil de usar
- Adecuado para despliegue a pequeña y mediana escala
Ventajas de Ansible y escenarios de aplicación
- Ligero sin cliente (sin agente)
- Código abierto gratuito, bajo costo de aprendizaje, comience rápidamente
- Use el libro de jugadas como la arquitectura de configuración central y un formato de script unificado para la implementación por lotes
- Expansión modular perfecta para soportar los escenarios de desarrollo convencionales actuales
- Potente estabilidad y compatibilidad
- Discusión activa de la comunidad y soporte técnico.
Instalación y configuración de Ansible
- Instalar Python3.6, Virtualenv, Ansible2.5
[root@centos7-node3 ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@centos7-node3 ~]# yum -y install python36 python36-devel git nss curl curl-devel
[root@centos7-node3 ~]# pip3 install virtualenv
[root@centos7-node3 ~]# useradd deploy
[root@centos7-node3 ~]# su - deploy
[deploy@centos7-node3 ~]$ virtualenv -p /usr/bin/python3.6 .py3-a2.5-env
[deploy@centos7-node3 ~]$ source .py3-a2.5-env/bin/activate #激活环境
(.py3-a2.5-env) [deploy@centos7-node3 ~]$ pip install paramiko PyYAML jinja2
[deploy@centos7-node3 ~]$ git clone https://github.com/ansible/ansible.git
(.py3-a2.5-env) [deploy@centos7-node3 ~]$ mv ansible .py3-a2.5-env/
(.py3-a2.5-env) [deploy@centos7-node3 ~]$ cd .py3-a2.5-env/ansible/
(.py3-a2.5-env) [deploy@centos7-node3 ansible]$ git checkout stable-2.5
(.py3-a2.5-env) [deploy@centos7-node3 ansible]$ source /home/deploy/.py3-a2.5-env/ansible/hacking/env-setup -q #加载环境
(.py3-a2.5-env) [deploy@centos7-node3 ansible]$ ansible --version #安装完成
Combate real
- Autenticación sin contraseña de SSH al cliente
(.py3-a2.5-env) [deploy@centos7-node3 ~]$ ssh-keygen -t rsa
(.py3-a2.5-env) [deploy@centos7-node3 ~]$ ssh-copy-id -i /home/deploy/.ssh/id_rsa.pub [email protected]
(.py3-a2.5-env) [deploy@centos7-node3 ~]$ mkdir test_playbooks
(.py3-a2.5-env) [deploy@centos7-node3 ~]$ cd test_playbooks/
(.py3-a2.5-env) [deploy@centos7-node3 test_playbooks]$ mkdir inventory
(.py3-a2.5-env) [deploy@centos7-node3 test_playbooks]$ mkdir roles
(.py3-a2.5-env) [deploy@centos7-node3 test_playbooks]$ vim inventory/testenv
[testservers]
centos7-node5
[testservers:vars]
servername=centos7-node5
user=root
output=/root/test.txt
(.py3-a2.5-env) [deploy@centos7-node3 test_playbooks]$ mkdir roles/testbox/tasks -p
(.py3-a2.5-env) [deploy@centos7-node3 test_playbooks]$ vim roles/testbox/tasks/main.yaml
(.py3-a2.5-env) [deploy@centos7-node3 test_playbooks]$ vim roles/testbox/tasks/main.yaml
- name: Print server name and user to remote testbox
shell: "echo 'Currently {{ user }} is logging {{ servername }}' >> {{output}}"
(.py3-a2.5-env) [deploy@centos7-node3 test_playbooks]$ vim deploy.yml
- hosts: "testservers"
gather_facts: true
remote_user: root
roles:
- testbox
- Ansible establecer resolución de nombre de host
[root@centos7-node3 ~]# vim /etc/hosts
192.168.56.11 centos7-node1
192.168.56.12 centos7-node2
192.168.56.13 centos7-node3
192.168.56.14 centos7-node4
192.168.56.15 centos7-node5
(.py3-a2.5-env) [deploy@centos7-node3 test_playbooks]$ ansible-playbook deploy.yml