ansible自动化部署apache服务

        使用Ansible来部署Apache服务是一个很好的选择,因为它可以自动化部署,确保所有的服务器上都有相同的配置,以下是一个简单的步骤指南,展示如何使用Ansible来部署Apache服务。

一、安装ansible

在基于Debian的系统中,可以使用以下命令来安装Ansible:

sudo apt update
sudo apt install ansible

在基于RPM系统中,可以使用以下命令:

sudo yum install ansible
# 或者在较新的系统中
sudo dnf install ansible

二、ansible配置

Inventory清单,编辑/etc/ansible/hosts文件,列出要由Ansible管理的受控主机IP地址或主机名,可以将主机分组以便在Playbooks中引用它们

[tests]
192.168.178.222

[webservers]
192.168.178.100
192.168.178.101

[dbservers]
192.168.178.103
192.168.178.104

Ansible主配置文件: /etc/ansible/ansible.cfg

你可以根据需要修改此文件来更改Ansible的默认设置,比如,可以设置日志路径、默认模块、禁用SSH密钥检查等。

inventory = /path/to/your/inventory/file # 修改inventory(清单)文件路径
forks = 5	# 定义Ansible 在执行任务时可以在多少个目标主机上并行运行。增加此值可以提高执行速度
remote_user = your_username # 指定 Ansible 用于连接到远程主机的默认用户
private_key_file = /path/to/your/private_key # 指定私钥文件的路径

host_key_checking = False # 设置为 False 可以避免首次连接时的密钥确认提示

sudo_user = your_sudo_username  
# sudo_pass = your_sudo_password  # 不建议直接在配置文件中设置密码

timeout = 10 # 设置 SSH 连接和命令执行的超时时间

log_path = /var/log/ansible.log # 指定 Ansible 日志文件的存储路径

三、创建角色目录

首先,在 /etc/ansible/roles 下创建 apache 目录:

mkdir -p /etc/ansible/roles/apache

四、创建角色内的目录结构

apache角色目录下,需要创建几个子目录:tasks,templatesfileshandlersvarsmeta, 和 defaults;尽管不是所有的都是必要的,但通常taskstemplates是必须的。

cd /etc/ansible/roles/apache
mkdir tasks templates

五、编写 tasks/main.yml

在 tasks/main.yml 中,将定义安装和配置Apache的步骤;

---
- name: Install httpd
  yum:
    name: httpd
    state: present

- name: Start httpd service
  service:
    name: httpd
    state: started
    enabled: yes

- name: Stop firewalld
  service:
    name: firewalld
    state: stopped
    enabled: no

- name: Create /site directory
  file:
    path: /var/www/html/site
    state: directory
    mode: '0755'

- name: Template index.html
  template:
    src: index.html.j2
    dest: /var/www/html/site/index.html
    mode: '0644'

六、编写 templates/index.html.j2

 templates/index.html.j2 中,将使用Jinja2模板语法来插入主机名和IP地址。

Welcome to {{ ansible_fqdn }} On {{ ansible_default_ipv4.address }}

要使用你在/etc/ansible/roles目录下创建的apache角色,你需要编写一个 Ansible playbook,以下是如何编写并使用该角色的步骤。

七、创建 playbook

/etc/ansible/目录下(或者任何希望存放playbook的地方),创建一个新的playbook文件,例如 apache.yml

cd /etc/ansible/
touch apache.yml

然后使用你喜欢的文本编辑器(如 nanovimemacs 等)打开apache.yml并输入以下内容:

---
- name: Deploy Apache
  hosts: your_target_group  # 替换为你的目标主机组名,例如 'webservers'
  become: yes  # 使用 sudo 或其他方法提升权限(如果需要)
  roles:
    - apache  # 调用你创建的 apache 角色

请注意,your_target_group需要替换为你的 Ansible 主机清单中定义的一个主机组名。

八、运行 playbook

使用 ansible-playbook命令运行playbook:

ansible-playbook apache.yml

如果你定义了密码提升(即 become: yes),Ansible可能会提示你输入sudo 密码(除非你在 ansible.cfg 中配置了become_method: sudo 和 become_pass)。

九、验证结果

一旦 playbook运行完成,你可以登录到目标机器上检查Apache是否已正确安装、启动,并且 /site/index.html 文件是否已正确创建。

你可以使用以下命令来检查 Apache 的状态:

sudo systemctl status httpd

并使用 curl 或 wget 来检查 /site/index.html 文件的内容:

curl http://localhost/site/index.html

 

或者

wget -qO- http://localhost/site/index.html

注意:如果你是在本地测试,并且 Apache 监听在默认的80端口上,那么http://localhost应该是正确的。但如果你是在远程机器上运行,你需要将localhost替换为远程机器的实际 IP 地址或域名。

十、验证后卸载apache

编写Ansible playbook,该playbook包含必要的步骤来在目标主机上卸载Apache。

--
- hosts: tests // 指定此playbook将在哪些主机上运行
  tasks:
    - name: stop httpd server // 停止httpd服务
      service: name=httpd state=stopped
      notify:
        - remove httpd
  handlers:
    - name: remove httpd
      yum: name=httpd state=removed

运行此playbook,您可以使用以下命令(假设playbook文件名为remove_httpd.yml):

ansible-playbook remove_httpd.yml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值