common

Общее

Ansible-роль для управления различными типами данных/ресурсов/конструкций в произвольном порядке.

Текущие управляемые ресурсы

  • Пользователи
  • Группы
  • Cron-задачи
  • Пакеты
  • Файлы
  • Удалённые файлы (загрузка по URL)
  • Строки в файлах
  • Конфигурации sudo
  • Репозитории пакетов (в данный момент Yum, в дальнейшем будут добавлены другие!)
  • Базы данных Postgres, пользователи, расширения, языки

Требования

Ansible >= 2.0.0

Переменные

Название Значение по умолчанию Описание
common_users не определено Словарь различных пользователей для управления (поддерживает все параметры модуля user)
common_groups не определено Словарь различных групп для управления (поддерживает все параметры модуля group)
common_cron_jobs не определено Словарь различных cron-задач для управления (поддерживает все параметры модуля cron)
common_packages не определено Список различных пакетов для установки
common_pips не определено Список различных Python-пакетов для установки через pip
common_files не определено Словарь различных файлов для управления (поддерживает все параметры модуля file)
common_fetch_files не определено Словарь различных удалённых файлов для загрузки из URL (поддерживает все параметры модуля get_url)
common_file_lines не определено Словарь строк файлов для управления (поддерживает все параметры модуля lineinfile)
common_sudoer_configs не определено Словарь различных правил sudoers для управления
common_yumrepos не определено Словарь Yum-репозиториев для управления
common_postgres_dbs не определено Словарь баз данных Postgres для управления (поддерживает все параметры модуля postgresql_db)
common_postgres_users не определено Словарь пользователей Postgres для управления (поддерживает все параметры модуля postgresql_users)
common_postgres_extensions не определено Словарь расширений Postgres для управления (поддерживает все параметры модуля postgresql_ext)
common_postgres_langs не определено Словарь языков процедурного программирования Postgres для управления (поддерживает все параметры модуля postgresql_lang)

Примеры определения

Вы можете определить любые данные/ресурсы/конструкции на любом уровне, который вы хотите (host_vars, group_vars, vars в плейбуке, файл vars, в роли, которая зависит от этой роли и т.д.).

Пользователи

common_users:
  some_user:
    group: mygroup
    generate_ssh_key: true
    ssh_key_comment: "Это пример ключа пользователя"
  some_other_user: {}

Группы

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

Cron-задачи

common_cron_jobs:
  'проверка директорий':
    minute: 0
    hour: '5,2'
    job: 'ls -alh > /dev/null'
    state: absent
  'некоторые старые задачи':
    state: absent
  'задача для выполнения при перезагрузке':
    special_time: reboot
    job: '/path/to/some_script.sh'
    state: absent
  'задача с файлом cron':
    job: 'uptime &> /dev/null'
    cron_file: cron_example
    state: absent

Пакеты

common_packages:
  - mg
  - golang

Python-пакеты (через pip)

common_pips:
  - ansible
  - Jinja2

Файлы

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: >-
      Эти содержимое будет вставлено в
      /tmp/my_other_file.

Удалённые файлы (загрузка по URL)

common_fetch_files:
  git_fat:
    url: 'https://raw.githubusercontent.com/jedbrown/git-fat/master/git-fat'
    dest: '/usr/bin/git-fat'
    mode: 755 # (нельзя использовать явный режим здесь)
    owner: root
    group: root

Строки в файлах

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"

Конфигурации 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'

Репозитории пакетов (в дальнейшем будут добавлены!)

# Деплой Yum-репозиториев
common_yumrepos:
  RethinkDB:
    descr: RethinkDB
    baseurl: 'http://download.rethinkdb.com/centos/6/x86_64'
    gpgcheck: 0
    enabled: 1

Базы данных Postgres

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

Пользователи Postgres

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

Расширения Postgres

common_postgres_extensions:
  example_extension:
    db: some_example_db

Языки Postgres

common_postgres_lang:
  example_lang:
    cascade: true
    db: example_db

Лицензия

MIT

Информация об авторе

Создано Calum MacRae

Не стесняйтесь:
Свяжитесь со мной - @calumacrae, mailto:[email protected]
Сообщить об ошибке
Внести вклад

О проекте

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

Установить
ansible-galaxy install cmacrae/ansible-common
Лицензия
Unknown
Загрузки
414
Владелец