Инструменты пользователя

Инструменты сайта


сервис_ansible

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
сервис_ansible [2019/09/05 14:11]
val [Использование модулей]
сервис_ansible [2020/06/18 15:15] (текущий)
val
Строка 1: Строка 1:
 +====== Сервис Ansible ======
  
 +  * [[https://​habrahabr.ru/​company/​express42/​blog/​254959/​|Ansible — давайте попробуем]]
 +  * [[https://​habrahabr.ru/​post/​195048/​|Ansible]]
 +  * [[https://​habrahabr.ru/​post/​305400/​|Пособие по Ansible]]
 +
 +  * [[https://​www.cisco.com/​c/​dam/​m/​ru_ru/​training-events/​2019/​cisco-connect/​pdf/​introduction_automation_with_ansible_idrey.pdf|Введение в автоматизацию с помощью Ansible (Cisco)]]
 +
 +  * [[https://​www.opennet.ru/​base/​dev/​yaml.txt.html|Знакомимся с YAML (yaml config lib perl python ruby)]]
 +  * [[https://​www.jeffgeerling.com/​blog/​yaml-best-practices-ansible-playbooks-tasks|YAML best practices for Ansible playbooks - tasks]]
 +  * [[https://​stackoverflow.com/​questions/​50788277/​why-3-dashes-hyphen-in-yaml-file|why — (3 dashes/​hyphen) in yaml file?]]
 +===== Установка на управляющей системе =====
 +<​code>​
 +node1# apt install ansible
 +</​code>​
 +
 +===== Установка на управляемых системах ====
 +
 +<​code>​
 +nodeN# apt install python python-apt
 +</​code>​
 +
 +
 +===== Настройка групп управляемых систем =====
 +
 +  * Определение групп управляемых систем ​
 +
 +<​code>​
 +node1# cat /​etc/​ansible/​hosts
 +</​code><​code>​
 +#[corp]
 +#​server.corp[1:​12].un
 +#​server.corp13.un ansible_ssh_user=root ansible_ssh_pass=123
 +
 +[corpX]
 +node[1:2]
 +
 +[addnodes]
 +192.168.16.3
 +192.168.16.4
 +
 +[sws]
 +switch[1:3] ansible_ssh_user=root ansible_ssh_pass=cisco
 +</​code>​
 +
 +===== Настройка транспорта ssh =====
 +
 +  * Для автоматизации подключения к новым системам может потребоваться отключение проверки их публичного ключа и [[Сервис SSH#​Парольная аутентификация]] в ssh
 +
 +<​code>​
 +# cat /​etc/​ansible/​ansible.cfg
 +</​code><​code>​
 +...
 +host_key_checking = False
 +...
 +</​code>​
 +
 +  * [[Сервис SSH#​Аутентификация с использованием ключей ssh]] (!!! не забыть подключение ansible узла к себе !!!)
 +
 +<​code>​
 +node1# ssh-keygen
 +
 +node1# ssh-copy-id node1
 +node1# ssh-copy-id node2
 +</​code>​
 +
 +===== Использование модулей =====
 +
 +<​code>​
 +node1# ansible corpX -m ping
 +node1# ansible all -m ping
 +
 +node1# ansible corpX -m command -a 'uname -a'
 +node1# ansible corpX -a 'uname -a'
 +
 +node1# ansible corpX -m apt -a '​pkg=apache2 state=present update_cache=true'​
 +
 +server# ansible sws -m ios_command -a "​commands='​show cdp nei'"​ -c local
 +</​code>​
 +
 +===== Использование playbook =====
 +
 +  * [[Управление учетными записями в Linux#​Назначение пароля]]
 +  * [[https://​docs.ansible.com/​ansible/​2.5/​modules/​user_module.html|Ansible module user - Manage user accounts]]
 +  * [[https://​coderlessons.com/​tutorials/​raznoe/​vyuchi-yaml/​uchebnik-po-yaml|Учебник по YAML]]
 +
 +<​code>​
 +node1# cat addusers.yml
 +</​code><​code>​
 +- hosts: corpX
 +  tasks:
 +    - name: Add user1
 +      user:
 +        name: user1
 +        uid: 10001
 +        shell: /bin/bash
 +        comment: "​Ivanov Ivan Ivanovitch,​RA7,​401,​499-239-45-23"​
 +        password: $6$3Gz1ZuH3yHckA$wQNZbfU/​9G6bYx08owpn7CoFP//​2WbB4cmDDOgwDYBbwEyHxB0QQyCuMrOiPOLv3JF5RFtIv/​r/​kxoPPYFCsx1
 +
 +    - name: Add user2
 +      user:
 +        name: user2
 +        uid: 10002
 +        shell: /bin/bash
 +        comment: "​Petrov Petr Petrov,​RA7,​402,​499-239-45-24"​
 +        password: $6$x/​AU/​p9Dgi/​ZiNF$6Xb8J4fsGuTi5IR0LaZe5pSgRX8vp54sfQGWJZZwKX.KFVpUL9m2PJNDh/​d/​l0rocueIvVjdQTzEAYPMmTm991
 +
 +
 +</​code><​code>​
 +node1# ansible-playbook addusers.yml
 +</​code><​code>​
 +server# cat cisco_change_conf.yml
 +</​code><​code>​
 +- hosts: sws
 +  connection: local
 +  tasks:
 +    - name: Change config on cisco device
 +      ios_config:
 +        lines:
 +          - logging facility local0
 +          - logging host server
 +          - ip scp server enable
 +</​code><​code>​
 +server# ansible-playbook cisco_change_conf.yml
 +
 +server# ansible-playbook cisco_change_conf.yml --limit @/​root/​cisco_change_conf.retry
 +</​code>​
 +===== Использование шаблонов =====
 +
 +  * [[https://​ru.wikipedia.org/​wiki/​%D0%98%D0%B4%D0%B5%D0%BC%D0%BF%D0%BE%D1%82%D0%B5%D0%BD%D1%82%D0%BD%D0%BE%D1%81%D1%82%D1%8C|Идемпотентность]]
 +  * [[https://​cryptic-cliffs-32040.herokuapp.com/​|How can I test jinja2 templates in ansible?]]
 +
 +<​code>​
 +node1# ansible -m setup corpX
 +
 +node1# ansible -m setup corpX | grep ansible_fqdn
 +
 +node1# cat index.html.j2
 +</​code><​code>​
 +<​html>​
 +<​body>​
 +<h1>
 +{{ ansible_fqdn }}
 +</h1>
 +</​body>​
 +</​html>​
 +</​code><​code>​
 +node1# cat inst_apache.yml
 +</​code><​code>​
 +- hosts: corpX
 +  tasks:
 +    - name: Installs apache web server
 +      apt: pkg=apache2 state=present update_cache=true
 +
 +    - name: Create index.html file
 +      template: src=index.html.j2 dest=/​var/​www/​html/​index.html
 +</​code><​code>​
 +node1# ansible-playbook inst_apache.yml
 +</​code><​code>​
 +# cat iax.conf.j2
 +</​code><​code>​
 +[general]
 +disallow=all
 +allow=alaw
 +
 +{% for Y in YS %}
 +[corp{{Y}}]
 +type=user
 +host=dynamic
 +secret=apassword{{Y}}
 +auth=md5
 +
 +[corp{{Y}}]
 +type=peer
 +host=server.corp{{Y}}.un
 +username=corp{{X}}
 +secret=apassword{{X}}
 +auth=md5
 +
 +{% endfor %}
 +</​code><​code>​
 +# cat ast_iax_corps.yml
 +</​code><​code>​
 +- hosts: corp
 +  tasks:
 +    - name: Create iax.conf file
 +      template: src=iax.conf.j2 dest=/​etc/​asterisk/​iax.conf
 +
 +    - name: Reload asterisk confs
 +      service: name=asterisk state=reloaded
 +</​code><​code>​
 +# ansible-playbook ast_iax_corps.yml --extra-vars '​{"​X":"​{{ ansible_eth0.ipv4.address.split(\"​.\"​)[3] }}","​YS":​[1,​2,​3,​4,​5,​6,​7,​8,​9,​10,​11,​12,​13]}'​
 +</​code>​
 +===== Использование handlers =====
 +
 +<​code>​
 +node1# cat conf_apache.yml
 +</​code><​code>​
 +- hosts: corpX
 +  tasks:
 +    - name: Add userdir to apache
 +      apache2_module:​
 +        state: present
 +#        state: absent
 +        name: userdir
 +      notify:
 +        - restart apache
 +
 +  handlers:
 +    - name: restart apache
 +      service: name=apache2 state=restarted
 +</​code><​code>​
 +node1# ansible-playbook conf_apache.yml
 +</​code>​
 +
 +===== Использование ролей =====
 +
 +  * [[https://​rtfm.co.ua/​ansible-roli-roles-primer/​|Ansible:​ роли (roles) – пример]]
 +  * [[Настройка стендов слушателей#​Ansible конфигурация]]
 +
 +<​code>​
 +# cat host.yml
 +</​code><​code>​
 +- name: Network config for hosts
 +  hosts: addnodes
 +  roles:
 +    - host
 +</​code><​code>​
 +# cat host/​vars/​main.yml
 +</​code><​code>​
 +name_prefix:​ node
 +X: "{{ ansible_eth0.ipv4.address.split('​.'​)[2] }}"
 +N: "{{ ansible_eth0.ipv4.address.split('​.'​)[3] }}"
 +</​code><​code>​
 +# cat host/​tasks/​main.yml
 +</​code><​code>​
 +- name: Create hosts file
 +  template: src=hosts.j2 dest=/​etc/​hosts
 +
 +- name: Create resolv.conf file
 +  template: src=resolv.conf.j2 dest=/​etc/​resolv.conf
 +
 +- name: Create hostname file
 +  template: src=hostname.j2 dest=/​etc/​hostname
 +
 +- name: Create interfaces file
 +  template: src=interfaces.j2 dest=/​etc/​network/​interfaces
 +
 +- name: Restart system
 +  command: shutdown -r +1
 +</​code><​code>​
 +# cat host/​templates/​hostname.j2
 +</​code><​code>​
 +{{ name_prefix }}{{ N }}.corp{{ X }}.un
 +</​code><​code>​
 +# cat host/​templates/​hosts.j2
 +</​code><​code>​
 +127.0.0.1 localhost
 +
 +{{ ansible_eth0.ipv4.address }} {{ name_prefix }}{{ N }}.corp{{ X }}.un {{ name_prefix }}{{ N }}
 +</​code><​code>​
 +# cat host/​templates/​resolv.conf.j2
 +</​code><​code>​
 +search corp{{ X }}.un
 +nameserver 192.168.{{ X }}.1
 +nameserver 192.168.{{ X }}.2
 +</​code><​code>​
 +# cat host/​templates/​interfaces.j2
 +</​code><​code>​
 +auto lo
 +iface lo inet loopback
 +
 +auto eth0
 +iface eth0 inet static
 +        address {{ ansible_eth0.ipv4.address }}
 +        netmask 255.255.255.0
 +        gateway 192.168.{{ X }}.254
 +</​code><​code>​
 +# ansible-playbook host.yml
 +</​code>​
сервис_ansible.1567681912.txt.gz · Последние изменения: 2019/09/05 14:11 (внешнее изменение)