Ansible, безплатен проект с отворен код, базиран на Python от Red Hat, е популярна платформа за управление на конфигурацията и ИТ автоматизация.
Той е мултиплатформен и може да работи с повечето съвременни операционни системи, включително Linux, Windows и Mac. Той поддържа декларативен език, написан на YAML или YAML Ain’t Markup Language, за описание на системната конфигурация.
Ansible, заедно с други модерни платформи за управление на конфигурацията, направи революция в ИТ автоматизацията и индустриалните стандарти. Инструментите за управление на конфигурацията станаха част от набора от инструменти DevOps и са неделима част от жизнения цикъл на всеки модерен ИТ процес. Това е приложимо за всяка модерна инфраструктурна среда, независимо дали е изградена върху локална, хибридна или облачна среда. Не само за DevOps, но и Ansible може да помогне за автоматизирането на много ежедневни задачи, извършвани от системен администратор.
Едно от предимствата на използването на Ansible е, че е без агенти и не се нуждае от много, за да започнете, освен SSH достъп до целевата машина и поддържаната версия на Python, която вече е инсталирана по подразбиране на повечето съвременни операционни системи. Също така, тъй като това е лек инструмент, той може да бъде разгърнат и използван с наследство към иновативни системи.
Съдържание
Използване на Ansible
Оркестрация
Ansible е предпочитан инструмент за организиране на различни задачи за системно администриране и внедряване. Playbooks позволяват използването на едни и същи работни потоци за оркестрация в различни проекти, а базираните на YAML конфигурационни данни позволяват съхраняване и създаване на версии на вашата инфраструктура в Git хранилище или всяка поддържана платформа за контрол на версиите.
Внедряване на приложение
Независимо дали става дума за просто приложение с код от няколко реда или многостепенно внедряване с тежка тежест, Ansible прави възможно автоматизирането на жизнения цикъл на внедряване на приложението от край до край.
Сигурност и съответствие
Ansible може също така да ви помогне да гарантирате, че вашите системи са защитени според указанията на вашата организация и в съответствие с индустриалните стандарти. Може да работи на хиляди сървъри, да генерира одит и да коригира тези дупки в сигурността, като дава на администратора пълен контрол върху средата.
Нека сега да разгледаме някои от обичайните Sysadmin Tasks, които можете да автоматизирате с Ansible.
Копирайте файлове от локална или отдалечена система
Като системен администратор е обичайно да копирате файлове от една директория в друга. Конфигурационните файлове често трябва да бъдат копирани на отдалечени сървъри или понякога трябва да преместим файлове от едно отдалечено местоположение на друго.
Модулът за копиране на 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 прави това възможно. Ето пример, който създава дял на 100GB диск, форматира го с файлова система 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 ви позволява лесно да инсталирате или премахвате пакети, без да се налага да посещавате всеки сървър и да изпълнявате ръчни команди. Ето пример, демонстриращ инсталирането и премахването на по един пакет за Ubuntu и базирани на RHEL/CentOS Linux сървъри.
--- - 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 системи управляват достъпа и разрешенията. В една голяма организация управлението на потребители и групи може да бъде голямо предизвикателство въпреки автоматизацията за поддържане на средата.
С Ansible системният администратор разполага с отличен инструмент за създаване, модифициране и изтриване на потребители и групи с всички различни възможности, поддържани в операционната система.
Ето един прост пример, който показва създаването и изтриването на потребители и групи с помощта на Ansible. След като тази книга се изпълни, целевите сървъри ще имат група A и група B, създадени с дадени GID, докато user1 ще бъде премахнат, ако присъства. Нов потребител без обвивка ще бъде създаден като потребител2 с даден 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 и неговия обширен набор от модули, вижте неговия документация.