Ansible
一款自动化运维工具,基于Python开发,其中集合了众多运维工具的优点,如puppet,chef,func,fabric。
ansible是自动化运维工具中大家认可度最高的,并且上手容易,学习简单。是每一位运维工程师必须掌握的技能之一。
ansible是基于paramiko开发的,基于模块化工作,本身没有批量部署的能力。具有部署能力的是ansible所运行的模块,ansible只提供一种框架。基于ssh远程主机通讯。
Apache
Apache就是一个网络服务器,可以用于托管网站、提供动态内容、代理和转发请求、监控和日志记录,以及自定义配置。
实验步骤
背景
首先配置Ansible,以便它可以与Web服务器应用程序进行通信。然后,创建一个行动手册,该手册将自动执行在Web服务器上安装Apache的过程。还可以创建一个自定义的行动手册,包含特定说明安装Apache。
所需资源
virtual box或VMWare
DEVASC虚拟机
实验
使用sudo systemctl start ssh
命令启动ssh服务
配置Ansible
进入到~/labs/devnet-src/ansible
文件下,使用vim命令更改host文件,
将此代码写入到文件中
[webservers]
192.0.2.3 ansible_ssh_user=devasc ansible_ssh_pass=Cisco123!
证书devasc和Cisco123!是DEVASC虚拟机的管理员凭证,在本实验中使用IPv4地址是192.0.2.3,这是虚拟接口下虚拟机上的静态IPv4地址
vim ansible.cfg
命令打开此文件下的ansible.cfg配置文件,并将下面代码写入
[defaults]
# Use local hosts file in this folder
inventory=./hosts
# Don't worry about RSA Fingerprints
host_key_checking = False
# Do not create retry files
retry_files_enabled = False
ansible.cfg文件告诉Ansible在哪找到清单文件并设置某些默认参数
验证通信
验证与本地web服务器的通信
分别使用ansible webservers -m ping
和ansible webservers -m command -a "/bin/echo hello world"
来验证是否可以ping Web服务器,以及与网络服务器进行通信
创建Playbook
创建Ansible Playbook来实现服务器自动化安装
测试
创建playbook来测试网络服务器组:
在ansible-apache目录下创建一个使用vim test_apache_playbook.yaml
命令创建一个名为test_apache_playbook.yaml文件,并进入到文件内
将下列yaml代码写入文本内
---
- hosts: webservers
tasks:
- name: run echo command
command: /bin/echo hello world
ansible-playbook -v test_apache_playbook.yaml
执行新创建的yaml文件
安装
在ansible-apache目录下创建一个使用vim install_apache_playbook.yaml
命令创建一个名为install_apache_playbook.yaml文件,并进入到文件内
将下列yaml代码写入文本内,此playbook用于安装Apache服务器
---
- hosts: webservers
become: yes
tasks:
- name: INSTALL APACHE2
apt:
name: apache2
update_cache: yes
state: latest
- name: ENABLED MOD_REWRITE
apache2_module:
name: rewrite
state: present
notify:
- RESTART APACHE2
handlers:
- name: RESTART APACHE2
service:
name: apache2
state: restarted
- hosts: webservers - 这是引用 hosts 清单文件中的 webservers 设备组。此行动手册将针对此组的所有设备运行。
- become: yes - become关键字激活 sudo 命令执行,这将允许安装应用程序等任务。
- apt:-apt模块用于管理 Linux 上的软件包和应用程序安装。
- handlers: - handlers 类似于任务,但不会自动运行。它们由一个任务调用。请注意,任务 ENABLED MOD_REWRITE 会调用处理程序 RESTART APACHE2。
使用ansible-playbook -v install_apache_playbook.yaml
执行行动手册
执行成功!
如果遇到报错,直接访问Anisble-playbook安装Apache报错Failed to update apt cache
验证
命令sudo systemctl status apache2
来查看状态
添加选项
为apache web服务器添加选项到Ansible playbook中;在生产环境中apache2默认安装通常是针对组织多需的特定功能进行自定义的。Ansible Playbook也可以帮助自动执行这些配置任务。
创建安装手册
vim创建install_apache_options_playbook.yaml文件
将下列代码加入文件中
---
- hosts: webservers
become: yes
tasks:
- name: INSTALL APACHE2
apt:
name: apache2
update_cache: yes
state: latest
- name: ENABLED MOD_REWRITE
apache2_module:
name: rewrite
state: present
notify:
- RESTART APACHE2
- name: APACHE2 LISTEN ON PORT 8081
lineinfile:
path: /etc/apache2/ports.conf
regexp: "^Listen 80"
line: "Listen 8081"
state: present
notify:
- RESTART APACHE2
- name: APACHE2 VIRTUALHOST ON PORT 8081
lineinfile:
path: /etc/apache2/sites-available/000-default.conf
regexp: "^<VirtualHost \\*:80>"
line: "<VirtualHost *:8081>"
state: present
notify:
- RESTART APACHE2
handlers:
- name: RESTART APACHE2
service:
name: apache2
state: restarted
利用此代码让服务器侦听端口从80改为8081
- lineinfile模块,用于替换/etc/apache2/ports.conf和/etc/apache2/sites-available/000-default.conf文件中的现有行。
cat命令查看两个文件信息,可以看到服务器当前监听端口为80
执行install_apache_options_playbook.yaml文件
再次查看两个文件,可以观察到服务器的监听端口改为8081端口
打开虚拟机内置浏览器,输入服务器地址和指定端口号,可以看到成功访问到默认的Apache2网页