Saltar al contenido

Cómo utilizar la asignación de desestructuración en JavaScript

marzo 4, 2020

 automatización

Introducción

Server ahora juega un papel esencial en la administración de sistemas, debido a la naturaleza disponible de los entornos de aplicaciones modernas. herramientas de gestión de configuración, tales como Ansible se utilizan normalmente para agilizar el proceso de automatización de la configuración del servidor mediante el establecimiento de procedimientos estándar para los nuevos servidores al mismo tiempo reducir los errores humanos asociados con configuraciones manuales.

Ansible ofrece una arquitectura sencilla que no requiere software especial para ser instalado en los nodos. También proporciona un robusto conjunto de características y una función de módulos que facilitan la escritura de scripts de automatización.

Esta guía explica cómo utilizar Ansible para automatizar los pasos contenidos en nuestra configuración inicial del servidor Guía para Ubuntu 18.04 servidores.

Requisitos previos

Con el fin de ejecutar la configuración automatizada proporcionada por el libro de jugadas que estamos discutiendo en esta guía, necesitará: nodo de control

  • Una Ansible: una máquina de Ubuntu 18.04 con Ansible instalado y configurado para conectarse a su anfitriones ansible utilizando claves SSH. Asegúrese de que el nodo de control tiene un usuario regular con permisos de sudo y activado un cortafuegos, como se explica en nuestra guía de configuración inicial del servidor. Para configurar Ansible, siga nuestra guía sobre cómo instalar y configurar el Ansible en Ubuntu 18.04.
  • Uno o más hosts Ansible: uno o más remotas Ubuntu 18.04 servidores.

Antes de continuar, primero tiene que asegurarse de que su nodo de control Ansible es capaz de conectarse y ejecutar comandos en el host Ansible (s). Para una prueba de conexión, consulte el paso 3 de Cómo instalar y configurar Ansible en Ubuntu 18.04.

lo que hace este libro de estrategias Do?

Este Ansible PlayBook ofrece una alternativa a la ejecución manual a través del procedimiento descrito en el servidor de guía de configuración inicial de Ubuntu 18.04 y la guía sobre cómo configurar las claves SSH en Ubuntu 18.04.

La ejecución de este libro de jugadas llevará a cabo las siguientes acciones en los hosts Ansible:

Una vez que el libro de jugadas tiene en marcha terminada, tendrá un nuevo usuario que se puede utilizar para iniciar sesión en el servidor.

cómo utilizar este libro de estrategias

La primera cosa que hay que hacer es obtener el libro de jugadas configuración inicial del servidor y sus dependencias de la DO en la comunidad / repositorio ansibles-libros de jugadas. Vamos a clonar este repositorio en una carpeta local en el interior del nodo de control Ansible.

Si es tu primera vez que utiliza el do-comunidad / ansibles-libros de jugadas repositorio, usted debe comenzar por clonación del repositorio a su nodo de controlador con:

cd ~
git clone https://github.com/do-community/ansible-playbooks.git
cd ansible-playbooks

  • cd ~
  • git clone https://github.com/ hacer en la comunidad / ansible-playbooks.git
  • cd ansibles-libros de jugadas

En caso de que ha clonado el repositorio antes, mientras que después de una guía diferente, el acceso a sus libros de jugadas ansibles-existentes copiar y ejecutar un comando git de tiro para asegurarse de que tiene contenidos actualizados:

cd ~/ansible-playbooks
git pull

  • cd ~ / ansibles-libros de jugadas
  • git pull

los archivos que estamos interesados ​​en ubicados dentro de la carpeta setup_ubuntu1804, que tiene la siguiente estructura:

setup_ubuntu1804
├── playbook.yml
└── vars
└── default.yml

Esto es lo que cada uno de estos archivos son:

  • vars / default.yml: archivo de configuración variable para la personalización libro de jugadas.
  • playbook.yml: El archivo de libro de jugadas, que contiene las tareas a ejecutar en el servidor remoto (s).

editaremos archivo de variables del libro de jugadas de personalizar sus valores. El acceso al directorio setup_ubuntu1804 y abra el archivo VARs / default.yml usando el editor de línea de comandos de elección:

cd setup_ubuntu1804
nano vars/default.yml

  • cd setup_ubuntu1804
  • nano VARs / default.yml Este archivo

contiene algunas variables que requieren su atención:

---
create_user: sammy
copy_local_key: "{{ lookup('file', lookup('env','HOME') + '/.ssh/id_rsa.pub') }}"
sys_packages: [ 'curl', 'vim', 'git', 'ufw']

la siguiente lista contiene una breve explicación de cada una de estas variables y cómo es posible que desee hacerlo:

  • create_user: el nombre del usuario sudo que se creará. En este ejemplo, vamos a utilizar Sammy.
  • copy_local_key: La ruta a un archivo de clave pública SSH local que se debe copiar al servidor remoto y se agrega como authorized_key para el nuevo usuario sudo. El valor por defecto utiliza el plug-in de búsqueda para obtener la ruta completa a la clave pública por defecto para el usuario actual del sistema en el nodo de control Ansible. sys_packages
  • : Una matriz que contiene la lista de los paquetes que desea instalar en sus anfitriones como parte de la configuración inicial del servidor. En este ejemplo, vamos a hacer que los paquetes rizo, vim, Git y UFW presentes.

Una vez que haya terminado la actualización de las variables dentro de VARs / default.yml, guarde y cierre el archivo. Si ha utilizado nano, hacerlo pulsando CTRL + X, Y, a continuación, ENTER.

Ahora está listo para ejecutar este libro de jugadas en uno o más servidores. La mayoría de los libros de jugadas están configurados para ejecutarse en todos los servidores en el inventario, de manera predeterminada. Podemos utilizar la opción -l para asegurarse de que sólo un subconjunto de servidores, o un único servidor, se ve afectada por el libro de jugadas. También podemos usar la opción -u para especificar qué usuario en el servidor remoto que estamos utilizando para conectar y ejecutar los comandos de libro de jugadas en los hosts remotos.

Para ejecutar el libro de jugadas solamente en server1, la conexión como root, puede utilizar el siguiente comando:

ansible-playbook playbook.yml -l server1 -u root

  • ansible-libro de jugadas playbook.yml -l server1 u root

Usted recibirá una salida similar a la siguiente:

Output
PLAY [all] *****************************************************************************************************************************

TASK [Gathering Facts] *****************************************************************************************************************
ok: [server1]

TASK [Install Prerequisites] ***********************************************************************************************************
changed: [server1]

TASK [Make sure we have a 'wheel' group] ***********************************************************************************************
changed: [server1]

TASK [Allow 'wheel' group to have passwordless sudo] ***********************************************************************************
changed: [server1]

TASK [Create a new regular user with sudo privileges] **********************************************************************************
changed: [server1]

TASK [Set authorized key for remote user] **********************************************************************************************
changed: [server1]

TASK [Disable password authentication for root] ****************************************************************************************
changed: [server1]

TASK [Update apt] **********************************************************************************************************************
changed: [server1]

TASK [Install required system packages] ************************************************************************************************
ok: [server1]

TASK [UFW - Allow SSH connections] *****************************************************************************************************
changed: [server1]

TASK [UFW - Deny all other incoming traffic by default] ********************************************************************************
changed: [server1]

PLAY RECAP *****************************************************************************************************************************
server1 : ok=11 changed=9 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

Nota : para obtener más información sobre cómo ejecutar jugadas ansible, consulte nuestra hoja de trucos ansible Guía.

Una vez finalizada la ejecución libro de jugadas, podrás iniciar sesión en el servidor con:

ssh sammy@server_host_or_IP

  • ssh Sammy @ server_host_or_IP

Recuerde reemplazar Sammy con el usuario definido por la variable create_user, y con su server_host_or_IP nombre de host del servidor o la dirección IP.

En caso de que haya cambiado la variable copy_local_key a punto a una clave SSH a medida (no del usuario de su sistema actual), usted tendrá que proporcionar un parámetro adicional que especifique la ubicación de su contraparte clave privada cuando se conecta a través de SSH como el nuevo usuario:

ssh sammy@server_host_or_IP -i ~/.ssh/ansible_controller_key

  • ssh Sammy @ server_host_or_IP -i ~ / .ssh / ansible_controller_key

Después de iniciar sesión en el servidor, puede comprobar las reglas activas del firewall UFW para confirmar que se ha configurado correctamente:

sudo ufw status

  • sudo UFW estado

debería obtener una salida similar a la siguiente:

OutputStatus: active

To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)

esto significa que el servidor de seguridad UFW éxito ha sido habilitadas. Dado que esta era la última tarea en el libro de jugadas, se confirma que el libro de jugadas se ejecuta en su totalidad en este servidor. Contenido

el libro de jugadas

Puede encontrar el libro de jugadas inicial de configuración del servidor aparece en este tutorial en los libros de jugadas ansibles-repositorio, dentro de la Comunidad digitalocean libros de jugadas. Para copiar o descargar directamente el contenido del script, haga clic en el botón Raw hacia la parte superior de cada script.

Los contenidos completos del libro de jugadas, así como sus archivos asociados también se incluyen aquí para su conveniencia.

vars / default.yml

El archivo de variables default.yml contiene los valores que se utilizarán dentro de las tareas libro de estrategias, tales como el nombre del usuario que se creó y los paquetes que se deben instalar como parte de la inicial del servidor preparar.

---
create_user: sammy
copy_local_key: "{{ lookup('file', lookup('env','HOME') + '/.ssh/id_rsa.pub') }}"
sys_packages: [ 'curl', 'vim', 'git', 'ufw']

playbook.yml

El archivo playbook.yml es donde se definen todas las tareas de esta configuración. Se comienza por definir el grupo de servidores que deben ser objeto de esta configuración (todos), después de lo cual se utiliza convertirse en: true para definir las tareas que deben ser ejecutadas con la elevación de privilegios (sudo) de forma predeterminada. A continuación, se incluye el archivo de VARs / default.yml variable para las opciones de configuración de carga.

---
- hosts: all
become: true
vars_files:
- vars/default.yml

tasks:
- name: Install Prerequisites
apt: name=aptitude update_cache=yes state=latest force_apt_get=yes

# Sudo Group Setup
- name: Make sure we have a 'wheel' group
group:
name: wheel
state: present

- name: Allow 'wheel' group to have passwordless sudo
lineinfile:
path: /etc/sudoers
state: present
regexp: '^%wheel'
line: '%wheel ALL=(ALL) NOPASSWD: ALL'
validate: '/usr/sbin/visudo -cf %s'

# User + Key Setup
- name: Create a new regular user with sudo privileges
user:
name: "{{ create_user }}"
state: present
groups: wheel
append: true
create_home: true
shell: /bin/bash

- name: Set authorized key for remote user
authorized_key:
user: "{{ create_user }}"
state: present
key: "{{ copy_local_key }}"

- name: Disable password authentication for root
lineinfile:
path: /etc/ssh/sshd_config
state: present
regexp: '^#?PermitRootLogin'
line: 'PermitRootLogin prohibit-password'

# Install Packages
- name: Update apt
apt: update_cache=yes

- name: Install required system packages
apt: name={{ sys_packages }} state=latest

# UFW Setup
- name: UFW - Allow SSH connections
ufw:
rule: allow
name: OpenSSH

- name: UFW - Deny all other incoming traffic by default
ufw:
state: enabled
policy: deny
direction: incoming

no dude en modificar este libro de jugadas o incluir nuevas tareas que mejor se adapte a sus necesidades individuales dentro de su propio flujo de trabajo.

Conclusión

la automatización de la configuración inicial del servidor le puede ahorrar tiempo, mientras que también hace que sus servidores seguirán una configuración estándar que puede ser mejorada y personalizada a sus necesidades. Con la naturaleza distribuida de las aplicaciones modernas y la necesidad de una mayor coherencia entre diferentes entornos de ensayo, la automatización como esta se convierte en una necesidad.

En esta guía, hemos demostrado cómo utilizar Ansible para la automatización de las tareas iniciales que se deben ejecutar en el servidor fresca, como crear un usuario no root con acceso sudo, permitiendo UFW y desactivación de conexión de la raíz remota basada en contraseña.

Si desea incluir nuevas tareas en este libro de jugadas para personalizar más la configuración inicial del servidor, por favor refiérase a nuestra guía de introducción Ansible Gestión de la Configuración 101: Escritura Ansible libros de jugadas. También se puede consultar nuestra guía sobre cómo Roles Uso Ansible a su Resumen de Infraestructura Ambiental.