cmacrae.common

Común

Un rol de Ansible para gestionar tipos diversos de datos/recursos/construcciones de manera ad-hoc.

Recursos gestionables actualmente

  • Usuarios
  • Grupos
  • Tareas programadas (Cron jobs)
  • Paquetes
  • Archivos
  • Archivos remotos (descarga de URL)
  • Líneas en archivos
  • Configuraciones de sudo
  • Repositorios de paquetes (Yum por ahora, ¡más por venir!)
  • Bases de datos, usuarios, extensiones y lenguajes de Postgres

Requisitos

Ansible >= 2.0.0

Variables

Nombre Valor por Defecto Descripción
common_users no definido Un diccionario de usuarios varios para gestionar (soporta todos los parámetros presentados por el módulo user)
common_groups no definido Un diccionario de grupos varios para gestionar (soporta todos los parámetros presentados por el módulo group)
common_cron_jobs no definido Un diccionario de tareas programadas varias para gestionar (soporta todos los parámetros presentados por el módulo cron)
common_packages no definido Una lista de paquetes varios para instalar
common_pips no definido Una lista de paquetes de Python varios para instalar mediante pip
common_files no definido Un diccionario de archivos varios para gestionar (soporta todos los parámetros presentados por el módulo file)
common_fetch_files no definido Un diccionario de archivos remotos para descargar desde URLs (soporta todos los parámetros presentados por el módulo get_url)
common_file_lines no definido Un diccionario de líneas de archivos para gestionar (soporta todos los parámetros presentados por el módulo lineinfile)
common_sudoer_configs no definido Un diccionario de reglas de sudoers varias para gestionar
common_yumrepos no definido Un diccionario de repositorios Yum para gestionar
common_postgres_dbs no definido Un diccionario de bases de datos de Postgres para gestionar (soporta todos los parámetros presentados por el módulo postgresql_db)
common_postgres_users no definido Un diccionario de usuarios de Postgres para gestionar (soporta todos los parámetros presentados por el módulo postgresql_users)
common_postgres_extensions no definido Un diccionario de extensiones de Postgres para gestionar (soporta todos los parámetros presentados por el módulo postgresql_ext)
common_postgres_langs no definido Un diccionario de lenguajes de procedimiento de Postgres para gestionar (soporta todos los parámetros presentados por el módulo postgresql_lang)

Ejemplos de definiciones

Puedes definir cualquier dato/recurso/construcción en el nivel que desees (host_vars, group_vars, variables de playbook, un archivo vars, en un rol que dependa de este rol, etc.)

Usuarios

common_users:
  some_user:
    group: mygroup
    generate_ssh_key: true
    ssh_key_comment: "Esta es la clave del ejemplo de usuario"
  some_other_user: {}

Grupos

common_groups:
  mygroup: {}
  my_other_group:
    gid: 9001
    system: true

Tareas programadas (Cron jobs)

common_cron_jobs:
  'check dirs':
    minute: 0
    hour: '5,2'
    job: 'ls -alh > /dev/null'
    state: absent
  'some old job':
    state: absent
  'a job to run at reboot':
    special_time: reboot
    job: '/path/to/some_script.sh'
    state: absent
  'a job with a cron file':
    job: 'uptime &> /dev/null'
    cron_file: cron_example
    state: absent

Paquetes

common_packages:
  - mg
  - golang

Paquetes de Python (a través de pip)

common_pips:
  - ansible
  - Jinja2

Archivos

common_files:
  /tmp/myfile:
    owner: some_user
    group: some_user
    mode: 0644
    src: /tmp/my_example_file
  /tmp/my_other_file:
    owner: some_user
    group: some_user
    mode: 0644
    content: >-
      Este contenido se insertará en
      /tmp/my_other_file.

Archivos remotos (descarga de URL)

common_fetch_files:
  git_fat:
    url: 'https://raw.githubusercontent.com/jedbrown/git-fat/master/git-fat'
    dest: '/usr/bin/git-fat'
    mode: 755 # (no se puede usar modo explícito aquí)
    owner: root
    group: root

Líneas en archivos

common_file_lines:
  /etc/hosts:
    regexp: '^127\.0\.0\.1'
    line: '127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4'
    owner: root
    group: root
    mode: 0644
  /etc/sudoers:
    state: absent
    regexp: "^%wheel"

Configuraciones de sudo

common_sudoer_configs:
  hubot_multi_sudo_rules:
    content:
      - 'hubot ALL=(root) NOPASSWD: /usr/bin/systemctl restart hubot-*'
      - 'hubot ALL=(root) NOPASSWD: /usr/bin/systemctl start hubot-*'
      - 'hubot ALL=(root) NOPASSWD: /usr/bin/systemctl status hubot-*'
      - 'hubot ALL=(root) NOPASSWD: /usr/bin/systemctl stop hubot-*'
  hubot_just_date_cmd:
    content:
      - 'hubot ALL=(root) NOPASSWD: /bin/date'

Repositorios de paquetes (más por venir)

# Desplegar repositorios Yum
common_yumrepos:
  RethinkDB:
    descr: RethinkDB
    baseurl: 'http://download.rethinkdb.com/centos/6/x86_64'
    gpgcheck: 0
    enabled: 1

Bases de datos de Postgres

common_postgres_dbs:
  example_db:
    login_password: 5uP3r5ecr37
    owner: some_user
    template: example_template0

Usuarios de Postgres

common_postgres_users:
  example_user:
    db: some_test_db
    encrypted: true
    login_password: 5uP3r5ecr37

Extensiones de Postgres

common_postgres_extensions:
  example_extension:
    db: some_example_db

Lenguajes de Postgres

common_postgres_lang:
  example_lang:
    cascade: true
    db: example_db

Licencia

MIT

Información del Autor

Creado por Calum MacRae

Siéntete libre de:
Contactarme - @calumacrae, mailto:[email protected]
Reportar un problema
Contribuir

Acerca del proyecto

An ansible role to manage miscellaneous types of data/resources/constructs in an ad-hoc fashion.

Instalar
ansible-galaxy install cmacrae.common
Licencia
Unknown
Descargas
426
Propietario