Содержание

ansible

Установка

sudo apt-add-repository ppa:ansible/ansible
sudo apt-get update
sudo apt-get install ansible

Настраиваем ssh для входа по ключу

http://docs.ansible.com/ansible/latest/intro_installation.html#latest-releases-via-apt-ubuntu

retry_files

Отключить создание retry файлов:
Добавить переменную перед запуском:

ANSIBLE_RETRY_FILES_ENABLED=0

Или добавить в:

[defaults]
retry_files_enabled = False

Изменить путь создания retry файлов:

retry_files_save_path = "~/"

hosts

Пример настройки hosts для входа по ключу:

testd.domain.com ansible_ssh_private_key_file=/etc/ansible/ansible_rsa ansible_user=ansible

Подготовка клиента

Создаём пользователя ansible и добавляем его в группу sudo:

adduser ansible --ingroup sudo

Разрешаем пользователю выполнять sudo без пароля:

echo "ansible ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee -a /etc/sudoers

Команды

Проверить связь со всеми хостами:

ansible all -m ping

Выполнить команду на удаленном хосте (proxy):

ansible -m shell -a 'ls /home/' proxy

Проверить playbooks:

ansible-playbook /etc/ansible/playbooks/ntp.yml --syntax-check

Показать всю собранную информацию о хосте:

ansible localhost -m setup

Показать информацию о сервисах хоста:

ansible localhost -m service_facts

Роли

Назначение директорий:

https://galaxy.ansible.com/ - готовые роли

Модули

http://docs.ansible.com/ansible/latest/list_of_all_modules.html - список всех модулей

copy

Пример копирования более одного файла:

- name: Copy conf file
  copy: src={{ item.src }} dest={{ item.dest }}
  with_items:
    - { src: /etc/ansible/playbooks/ntp/timesyncd.conf, dest: /etc/systemd/timesyncd.conf }
    - { src: /etc/ansible/playbooks/ntp/ntp.conf, dest: /etc/ntp.conf }

http://docs.ansible.com/ansible/latest/copy_module.html

apt_key

Пример добавления ключей по url и по id:

- name: Add an Apt signing key rep.domain.com
  apt_key:
    url: "http://rep.domain.com/pubring.gpg"
    state: present
 
- name: Add an apt key Zabbix by id from a keyserver
  apt_key:
    keyserver: keyserver.ubuntu.com
    id: 082AB56BA14FE591

http://docs.ansible.com/ansible/latest/apt_key_module.html

docker_container

На целевой системе должен быть установлен docker-py:

sudo pip install docker-py

или

sudo apt install python-docker

Пример запуска и удаления контейнера:

- name: Create a Alpine container
  docker_container:
    name: alpine
    image: alpine
 
- name: Remove a Alpine container
  docker_container:
    name: alpine
    state: absent

https://docs.ansible.com/ansible/latest/modules/docker_container_module.html

service_facts

Собрать информацию о всех сервисах/службах хоста.

- name: populate service facts
  service_facts:
 
- debug:
    var: ansible_facts.services

https://docs.ansible.com/ansible/latest/modules/service_facts_module.html

Примеры

Запуск одной роли для одного хоста

Создаём playbook role.yml:

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

- hosts:
  - '{{ HOST }}'
  remote_user: ansible
  gather_facts: false
  become: yes
 
  roles:
  - '{{ ROLE }}'

Запускаем, пример для роли sysctl и хоста d2proxy:

ansible-playbook role.yml -e "ROLE=sysctl" -e "HOST=d2proxy"

Если роли необходимо передавать параметры, то незабываем добавлять их в role.yml

https://toster.ru/q/373534

Показать список задач

Параметр: –list-tasks

ansible-playbook -i hosts role.yml -e "ROLE=docker" -e "ROLE=sysctl" --list-tasks

GUI

Foreman

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

Добавление репозиториев:

echo deb http://deb.theforeman.org/ xenial 1.15 | sudo tee /etc/apt/sources.list.d/foreman.list
echo deb http://deb.theforeman.org/ plugins 1.15 | sudo tee -a /etc/apt/sources.list.d/foreman.list
wget --quiet https://deb.theforeman.org/pubkey.gpg -O - | sudo apt-key add -
sudo apt-get update

Устанавливаем mariadb

Устанавливаем Foreman:

sudo apt install foreman foreman-mysql2

Зависимости

Зависимости

Будут установлены следующие дополнительные пакеты:
augeas-lenses binutils build-essential bundler cpp cpp-5 dpkg-dev fakeroot fonts-lato foreman-debug foreman-proxy g++ g++-5 gcc gcc-5 javascript-common libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan2 libatomic1 libaugeas0 libc-dev-bin libc6-dev libcc1-0 libcilkrts5 libdpkg-perl libfakeroot libfile-fcntllock-perl libgcc-5-dev libgmp-dev libgmpxx4ldbl libgomp1 libgssrpc4 libisl15 libitm1 libjs-jquery libkadm5clnt-mit9 liblsan0 libmpc3 libmpx0 libquadmath0 libruby2.3 libstdc++-5-dev libtsan0 libubsan0 libvirt0 libxen-4.6 libxenstore3.0 libyajl2 linux-libc-dev make manpages-dev rake ruby ruby-augeas ruby-bundler ruby-bundler-ext ruby-concurrent ruby-dev ruby-did-you-mean ruby-ffi ruby-gssapi ruby-json ruby-libvirt ruby-minitest ruby-molinillo ruby-net-http-persistent ruby-net-telnet ruby-power-assert ruby-rack ruby-rack-protection ruby-rb-inotify ruby-rkerberos ruby-rubyipmi ruby-sinatra ruby-test-unit ruby-thor ruby-tilt ruby2.3 ruby2.3-dev rubygems-integration zip zlib1g-dev libmysqlclient-dev
Предлагаемые пакеты:
augeas-doc binutils-doc cpp-doc gcc-5-locales debian-keyring g++-multilib g++-5-multilib gcc-5-doc libstdc++6-5-dbg gcc-multilib autoconf automake libtool flex bison gdb gcc-doc gcc-5-multilib libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg libasan2-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libmpx0-dbg libquadmath0-dbg apache2 | lighttpd | httpd augeas-tools glibc-doc gmp-doc libgmp10-doc libmpfr-dev krb5-doc krb5-user libstdc++-5-doc make-doc ri doc-base


Создаём БД:

export FOREMAN_DB_PW=`dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 - | cut -c2-18`
mysql -u root -e "CREATE DATABASE foreman CHARACTER SET utf8 COLLATE utf8_general_ci;" -p
mysql -u root -e "GRANT ALL PRIVILEGES ON foreman.* TO foreman@localhost IDENTIFIED BY '${FOREMAN_DB_PW}';\
FLUSH PRIVILEGES;" -p

Настраиваем /etc/foreman/database.yml

Инициализируем БД:

sudo foreman-rake db:migrate
sudo foreman-rake db:seed

https://theforeman.org/manuals/1.15/index.html


Semaphore

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

Устанавливаем mariadb

Создаём БД:

export SEMAPHORE_DB_PW=`dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 - | cut -c2-18`
echo $SEMAPHORE_DB_PW
mysql -u root -e "CREATE DATABASE semaphore CHARACTER SET utf8 COLLATE utf8_general_ci;" -p
mysql -u root -e "GRANT ALL PRIVILEGES ON semaphore.* TO semaphore@localhost IDENTIFIED BY '${SEMAPHORE_DB_PW}'; FLUSH PRIVILEGES;" -p

Скачиваем последний Semaphore и подготавливаем:

wget https://github.com/ansible-semaphore/semaphore/releases/download/v2.4.1/semaphore_linux_amd64 -P /tmp
sudo mv /tmp/semaphore_linux_amd64 /usr/bin/semaphore
chmod +x /usr/bin/semaphore
sudo mkdir -p /opt/data/semaphore
sudo chown $(whoami): /opt/data/semaphore

Первый запуск для инициализации:

semaphore -setup

Запуск:

semaphore -config /opt/data/semaphore/semaphore_config.json

или как сервис:

nohup semaphore -config /opt/data/semaphore/semaphore_config.json &

Доступен по адресу http://semaphore:3000

https://gist.github.com/thedumbtechguy/0fae1ae931042829b73426630f3cd168


Polemarch

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

Скачиваем последний Polemarch и устанавливаем:

sudo dpkg -i polemarch_X.X.X-0_amd64.deb 
sudo apt-get install -f

Зависимости

Зависимости

Будут установлены следующие дополнительные пакеты:
libc-dev-bin libc6-dev libpython2.7 libssl-dev libssl-doc libyaml-dev linux-libc-dev manpages-dev python-pip-whl python-virtualenv python3-virtualenv sshpass virtualenv zlib1g-dev
Предлагаемые пакеты:
glibc-doc libyaml-doc


Доступен по адресу http://polemarch:8080


nci ansible ui

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

Установливаем npm и nodejs:

sudo apt install npm nodejs-legacy

Зависимости

Зависимости

Будут установлены следующие дополнительные пакеты:
binutils build-essential cpp cpp-5 dpkg-dev fakeroot g++ g++-5 gcc gcc-5 gyp javascript-common libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan2 libatomic1 libc-dev-bin libc6-dev libcc1-0 libcilkrts5 libdpkg-perl libfakeroot libfile-fcntllock-perl libgcc-5-dev libgomp1 libisl15 libitm1 libjs-inherits libjs-jquery libjs-node-uuid libjs-underscore liblsan0 libmpc3 libmpx0 libquadmath0 libssl-dev libssl-doc libstdc++-5-dev libtsan0 libubsan0 libuv1 libuv1-dev linux-libc-dev make manpages-dev node-abbrev node-ansi node-ansi-color-table node-archy node-async node-block-stream node-combined-stream node-cookie-jar node-delayed-stream node-forever-agent node-form-data node-fstream node-fstream-ignore node-github-url-from-git node-glob node-graceful-fs node-gyp node-inherits node-ini node-json-stringify-safe node-lockfile node-lru-cache node-mime node-minimatch node-mkdirp node-mute-stream node-node-uuid node-nopt node-normalize-package-data node-npmlog node-once node-osenv node-qs node-read node-read-package-json node-request node-retry node-rimraf node-semver node-sha node-sigmund node-slide node-tar node-tunnel-agent node-underscore node-which nodejs nodejs-legacy nodejs-dev zlib1g-dev
Предлагаемые пакеты:
binutils-doc cpp-doc gcc-5-locales debian-keyring g++-multilib g++-5-multilib gcc-5-doc libstdc++6-5-dbg gcc-multilib autoconf automake libtool flex bison gdb gcc-doc gcc-5-multilib libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg libasan2-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libmpx0-dbg libquadmath0-dbg apache2 | lighttpd | httpd glibc-doc libstdc++-5-doc make-doc node-hawk node-aws-sign node-oauth-sign node-http-signature debhelper


Устанавливаем nci ansible ui:

git clone https://github.com/node-ci/nci-ansible-ui-quick-setup
cd nci-ansible-ui-quick-setup
npm install

Не работает https://github.com/node-ci/nci-ansible-ui/issues/7


Docker

Dockerfile:

FROM ubuntu:18.04

LABEL maintainer="domain" \
      release-date="2020–04–27"

ENV ANSIBLE_RETRY_FILES_ENABLED 0

WORKDIR /etc/ansible

RUN set -x \
  && apt-get update && apt-get install -y ansible python-docker curl jq \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*

CMD ["/bin/bash"]

Ссылки

http://support.mdl.ru/MasteringAnsible2nd/content/index.html - Полное руководство Ansible
https://habrahabr.ru/post/306998/ - 15 вещей, которые вы должны знать об Ansible