7 щоденних завдань системного адміністратора для автоматизації за допомогою Ansible

| | 0 Comments| 10:20 AM
Categories:

Ansible, безкоштовний проект Red Hat на основі Python з відкритим вихідним кодом, є популярною платформою керування конфігураціями та ІТ-автоматизації.

Він багатоплатформний і може працювати з більшістю сучасних операційних систем, включаючи Linux, Windows і Mac. Він підтримує декларативну мову, написану YAML або YAML Ain’t Markup Language, для опису конфігурації системи.

Ansible разом з іншими сучасними платформами керування конфігураціями здійснив революцію в автоматизації ІТ та галузевих стандартах. Інструменти керування конфігурацією стали частиною набору інструментів DevOps і є невід’ємною частиною життєвого циклу будь-якого сучасного ІТ-процесу. Це застосовно для будь-якого сучасного інфраструктурного середовища, незалежно від того, чи воно побудоване на локальному, гібридному чи хмарному середовищі. Не лише для DevOps, Ansible також може допомогти автоматизувати багато повсякденних завдань, які виконує системний адміністратор.

Одна з переваг використання Ansible полягає в тому, що він не використовує агентів і не потребує багато чого для початку, окрім доступу SSH до цільової машини та підтримуваної версії Python, яка вже встановлена ​​за замовчуванням у більшості сучасних операційних систем. Крім того, оскільки це легкий інструмент, його можна розгортати та використовувати разом із застарілими інноваційними системами.

Використання Ansible

Оркестровка

Ansible є інструментом вибору для оркестрування різноманітних завдань системного адміністрування та розгортання. Playbooks дозволяють використовувати однакові робочі процеси оркестровки в різних проектах, а дані конфігурації на основі YAML дозволяють зберігати та керувати версіями вашої інфраструктури в сховищі Git або будь-якій підтримуваній платформі контролю версій.

Розгортання програми

Незалежно від того, чи це проста програма з кількома рядками коду чи багаторівневе розгортання великої ваги, Ansible дає змогу автоматизувати життєвий цикл розгортання додатка від кінця до кінця.

Безпека та відповідність

Ansible також може допомогти забезпечити захист ваших систем відповідно до вказівок вашої організації та галузевих стандартів. Він може працювати на тисячах серверів, проводити аудит і виправляти ці діри в безпеці, даючи адміністратору повний контроль над середовищем.

Давайте тепер розглянемо деякі з поширених завдань системного адміністратора, які можна автоматизувати за допомогою Ansible.

Копіювати файли з локальної або віддаленої системи

Як системний адміністратор зазвичай копіює файли з одного каталогу в інший. Файли конфігурації часто потрібно копіювати на віддалені сервери, або іноді нам потрібно перемістити файли з одного віддаленого місця в інше.

  Pro, Air, Mini або Regular: який iPad купити?

Модуль копіювання Ansible може допомогти вам виконати ці завдання в посібнику.

Для системного адміністратора це звичайне завдання знати стан керованих серверів і виконувати заздалегідь визначені дії згідно з політикою організації. Одним із таких завдань є визначення часу роботи сервера. За допомогою Ansible ми можемо легко отримати значення часу безвідмовної роботи та надрукувати їх разом. Нижче наведено приклад копіювання конфігурації ntp з локального на віддалений сервер за допомогою модуля копіювання:

---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
    - name: Copy a new ntp configuration file and back up the original, if it differs
      copy:
        src: ./ntp.conf
        dest: /etc/ntp.conf
        owner: root
        group: root
        mode: '0644'
        backup: yes

Налаштуйте додаткові завдання cron

Налаштування запланованих завдань для виконання рутинних завдань є частиною керування будь-яким сервером. Ви можете запланувати автоматичне резервне копіювання, виправлення, аудит тощо на певний час доби або місяця автоматично, залишаючи продуктивний час для вашого використання.

cron є одним із таких інструментів у Linux, який підтримує планування, і Ansible може допомогти вам додати або змінити ці завдання. Як приклад, наведений нижче посібник демонструє, як можна легко встановити завдання rsync як root на деяких або всіх ваших серверах за допомогою Ansible.

---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
    - name: Deploy cron job
      cron:
        name: "Set rsync job"
        user: root
        minute: "5"
        hour: "4"
        job: "rsync -avz /path/to/folder1 /path/to/folder1 2>&1"

Управління дисками та файловими системами

Ansible можна використовувати для керування дисками, макетами розділів, файловими системами та монтуваннями, включаючи /etc/fstab на серверах Linux. Інший модуль Ansible робить це можливим. Ось приклад створення розділу на диску об’ємом 100 ГБ, форматування його за допомогою файлової системи ext4, створення нового каталогу для монтування розділу та монтування його в заданому каталозі. Запис у /etc/fstab також створюється за допомогою тимчасового або постійного монтування залежно від параметрів модуля.

---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
    - name: Create a partition
      parted:
        device: /dev/sdb
        number: 1
        part_end: "100%"
        state: present
    - name: Format new partition
      filesystem:
        fstype: ext4
        dev: /dev/sdb1
    - name: Create mount directory
      file:
        path: /data
        state: directory
    - name: Mount partition
      mount:
        path: /data
        src: /dev/sdb1
        fstype: ext4
        state: mounted

Збирайте журнали сервера

Зберігання журналів у зручному місці іноді важливо для безпеки, аудиту та аналізу. Ansible дозволяє збирати журнали з різних серверів у вашому корпоративному середовищі та легко зберігати їх у визначеному вами місці. Ось підручник, як цього досягти:

---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
  
    - name: Find logs
      find:
        paths: /var/log/
        patterns: '*.log'
        recurse: yes
      register: _logs

    - name: Fetch logs
      fetch:
        src: "{{ item.path }}"
        dest: /tmp/logs
      with_items: "{{ _logs.files }}"

Встановити або видалити пакети та програмне забезпечення

Пакети часто потрібно встановлювати за запитами користувачів або як частину початкових збірок сервера. Нам також може знадобитися видалити певні пакунки, які більше не потрібні або мають деякі критичні помилки тощо. Ansible дозволяє легко встановлювати або видаляти пакунки без необхідності переходити на кожен сервер і запускати команди вручну. Ось приклад, який демонструє інсталяцію та видалення кожного пакета для серверів Linux на основі Ubuntu та RHEL/CentOS.

---
- hosts: ubuntu
  gather_facts: no
  tasks:
    - name: Install lsof utility
      apt:
        pkg: lsof
        state: latest
      sudo: yes
    - name: Remove ARP Scan utility
      apt:
        pkg: arp-scan
        state: absent
      sudo: yes
      
 ---
- hosts: centos
  gather_facts: no
  tasks:
    - name: Install lsof utility
      yum:
        pkg: lsof
        state: latest
      sudo: yes
    - name: Remove ARP Scan utility
      yum:
        pkg: arp-scan
        state: absent
      sudo: yes

Керування користувачами

Користувачі та групи утворюють базову структуру, навколо якої системи на базі Unix/Linux керують доступом і дозволами. У великій організації керування користувачами та групами може бути серйозною проблемою, незважаючи на автоматизацію для підтримки середовища.

  Як змінити паролі на iPhone

Завдяки Ansible системний адміністратор має чудовий інструмент для створення, зміни та видалення користувачів і груп із усіма різними можливостями, які підтримуються ОС.

Ось простий приклад, який показує створення та видалення користувачів і груп за допомогою Ansible. Після запуску цієї ігри на цільових серверах буде створено групу A та групу B із заданими GID, тоді як user1 буде видалено, якщо він присутній. Новий користувач без оболонки буде створено як user2 із вказаним UID, призначеними групами та заблокованим паролем.

---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
    - group:
        gid: 12310
        name: groupA
        state: present
    - group:
        gid: 12311
        name: groupB
        state: present
    - user:
        name: user1
        state: absent
    - user:
        name: user2
        uid: 12427
        shell: /bin/false
        password_lock: yes
        groups: groupA, groupB

Управління службами

Сервіси — це демони процесів, які працюють у фоновому режимі та обслуговують певні служби, як-от sshd, що забезпечує з’єднання SSH тощо. Використовуючи Ansible, ви можете керувати системними та користувацькими службами, наприклад запускати, зупиняти та перезапускати їх. Ось зразок підручника, щоб продемонструвати це:

---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
    - name: Restart ssh daemon
      service:
        name: ssh
        state: restarted
    - name: Restart sssd daemon
      service:
        name: sssd
        state: stopped
    - name: Restart httpd daemon
      service:
        name: httpd
        state: started

У наведеному вище прикладі служба SSH буде перезапущена, а потім зупиниться служба SSSD. Демон httpd запускається ближче до кінця. Оскільки Ansible є ідемпотентним, будь-яка служба, яка вже запущена або зупинена, не буде змінена, тоді як перезапуск завжди змінює стан служби. Не забудьте перевірити назву служби, оскільки різні дистрибутиви Linux використовують інші назви навіть для тієї самої служби, наприклад ssh і sshd.

  Додаток для запису на основі жестів із текстом, фотографією, голосовими нотатками та нагадуванням

Резюме 👨‍💻

Ansible полегшує життя системного адміністратора, дозволяючи виконувати повторювані та трудомісткі завдання в автоматизований спосіб і зменшуючи людські помилки та зусилля. Крім того, це дозволить зберігати конфігураційні дані в центральному сховищі коду, наприклад Git, дозволяючи кільком користувачам співпрацювати та переглядати кожну дію.

Щоб дізнатися більше про Ansible та його широкий набір модулів, зверніться до нього документація.