[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

我第一次使用IAC-让我们用Ansible Edition构建一个灯环境

谢谢。这是Daimyojin Chikuwa,他去年加入了新毕业生。

时间很快过去。

我觉得我渴望写一个关于去年八月的博客。

因此,我使用Ansible设置了一个灯泡环境,因此我将在本文中简要介绍它。

我还没有任何深刻的知识,所以我想以一种使无效工作的粗略方式写下它。

让我们尝试运行Ansible

前提

环境

Virtualbox:版本 7.0.20

流浪者:版本2.4.1

流浪盒:AlmaLinux 9

Ansible:版本2.14.17

 

Ansible是一种配置管理工具,不仅可以用于虚拟环境,还可以用于构建AWS等云。

这次,我们将准备三个虚拟环境,一个作为Ansible执行服务器,另外两个作为服务器来设置灯泡环境。

有关如何安装和既定信息的更多信息,请参阅一位伟大的老年人撰写的文章。

配置Ansible

Ansible的基本配置如下:

1
/etc/ansible└ - └ - 角色└ - 主持人└ -  playbook.yml└iscible.cfg
主持人
  • 名称:库存文件
  • 角色:定义由Ansible管理的目标主机。
  • 内容:主机名和IP地址可以分组在一起。您还可以按类别(例如Web服务器和数据库服务器)对主机进行分类。这次,我们将描述上面提到的Ansible自适应服务器的IP。
playbook.yml
  • 名称:剧本文件
  • 角色:定义特定的操作和任务。
  • 内容:定义如何在特定主机上执行一组任务。它通常包含特定的说明,例如要安装的软件包和要启动的服务。在这里,我们将编写用于安装灯泡环境的说明。
ansible.cfg
  • 角色:控制Ansible配置文件中Ansible的整体行为。
  • 内容:您可以指定各种选项,例如库存路径,远程用户,SSH密钥路径以及是否检查主机密钥。这次我不会碰。

基本上,如果存在以上三个文件,则可以使用Ansible的作品。

角色目录将在稍后进行解释。

如何编写库存文件

在本节中,我们将研究如何编写库存文件。

这次,这很容易,所以我会尽快完成。

1
[all:vars] ansible_user = vagrant ansible_password = vagrant [test_ansibleclient] ansibleclients_host = 192.168.33.10 [ansibleclient ansible_host = 192.168.33.40

库存文件以上面显示的形式编写。

  • 组定义:可以将主机分组为[xxx] 这次我们针对的两个服务器 AnsibleClients 分组
  • 组变量:vars部分来定义适用于该组中所有主机的变量。这次,我们将撰写有关用户名和密码的文章。此外,[ALL:VARS]将其设置为所有主机的共同点。

如何写剧本

基本的剧本结构如下:

  • 主机:指定库存文件中定义的组并应用后续处理。
  • VAR:您可以定义变量。如果不存在,这不是问题。
  • 任务:描述适用于目标服务器的处理。此处描述的过程按从上到下执行。它是剧本的核心部分。
  • 处理程序:过程可以写在与任务的单独框架中。当您想将条件添加到过程的执行时,例如当○○是▼▼的结果时,可以使用它。如果不存在,这不是问题。

让以上四组一场比赛

然后,多个戏剧的集合变成了剧本文件

 

现在,让我们看一下特定的处理。

1
---- #hosts-主机:ansibleClients成为:是#tasks任务: - 名称:安装Apache Yum:名称:httpd状态:最新

它是以yaml格式编写的,因此很容易理解。无论您拥有什么知识,都可以阅读并知道您想做什么。

▼#主机部分

  • 主机指定库存文件在上一节中要针对的主机或组。
  • 成为指定任务是否是使用管理员特权运行的。

▼#任务部分

  • 任务描述稍后要执行的任务。
  • 名称描述任务的名称。
  • 百胜指定要使用的模块这次我想安装Apache,所以我将使用百胜。对于Ubuntu等,指定APT。
  • 名称指定要安装的软件包名称。
  • 状态指定软件包的状态。

这意味着最新的Apache是​​带有管理员特权的。

 

您还可以通过获取密钥和更改权限来更改使用的模块。

▼获取钥匙

1
- 名称:安装mysql gpg键rpm_key:状态:礼物:https://repo.mysql.com/rpm-gpg-key-mysql-2023

▼更改权限和所有权

1
- 名称:HTML和PHP文件文件的Chmod和Chown:路径:“/var/www/html/{{item}}”所有者:apache group:apache group:apache mode:'0644'loop: -  test.html- test.html- test.php-phpp test.phpp

 

有一个官方的模块列表,可以与Ansible一起使用。

https://docs.ansible.com/ansible/2.9_ja/modules/modules_by_category.html#modules-by-category

您应该将其用作编写过程的参考。

...我想这么说,但是有太多,所以我认为最好搜索“ Ansible模块”并参考介绍多功能模块的博客。

让我们尝试一下

检查实际的机器

现在,让我们尝试运行Ansible。

所使用的剧本文件如下:

1
- hosts: ansibleclients become: true tasks: - name: install httpd yum: name=httpd state=latest - name: Apache start / enable service: name=httpd state=started enabled=yes - name: Add MySQL repository get_url: url: https://repo.mysql.com/mysql80-community-rease-el9-5.noarch.rpm dest:/tmp/mysql80-community-rease-lease-el9-5.noarch.rpm https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 yum: name: /tmp/mysql80-community-release-el9-5.noarch.rpm state: present - name: Install MySQL server yum: name: mysql-community-server state: latest - name: Start MySQL service service: name: mysqld state: started enabled: yes - name: Import Remi GPG key rpm_key: state: present key: https://rpms.remirepo.net/RPM-GPG-KEY-remi2021 - name: Install Remi repository yum: name: https://rpms.remirepo.net/enterprise/remi-release-9.rpm state: present - name: Install php及相关软件包百年:名称: -  PHP  -  PHP  -  php -devel -php -mbstring -php -mysqli -php -gd状态:存在通知: -  httpd restart#复制html和用于测试的PHP脚本 - 名称 - 名称 - 名称:html副本:html副本: src:/etc/ansible/test.php dest:/var/www/html-名称:html和php file的chmod和chown和php文件文件:路径:“/var/var/www/www/html/{{item}}}”重新启动服务:名称= httpd state =重新启动

运行Ansible时,如果您无法连接到SSH,则会发生错误,因此请提前向Keyscan注册。

1
ssh-keyscan xxx.xxx.xxx.xxx/root/.ssh/Known_hosts

单击此处以获取命令运行剧本。

1
Ansible-Playbook/Playbook Pass

如果正常完成,则将输出以下结果:

1
play recap **** ansibleclients_host1:ok = 15更改= 14 noterach = 0失败= 0跳过= 0跳过= 0响应= 0 nsibleclients_host2:ok ok ok = 16更改= 14 noverable = 14 noterthable = 0失败= 0 failed = 0 spkipped = 0 seved = 0 recucdue = 0忽略= 0忽略= 0

如果失败或无法到达的是0,那没有问题。

剩下的就是检查测试HTML和PHP脚本的操作,看看是否可以登录MySQL。

将过程分为目录

现在,有些人可能已经在上一节中查看了剧本,并认为如果将它们全部放在一个文件中,那么很难操纵。

有时您想安装Apache,但不需要MySQL。

但是创建多个剧本很麻烦...

是的。当然,对于这些人来说,有一些方法可以将过程分为小块并使用它。

使用角色将过程分开

我将使用稍后在Ansible配置章节中提到的角色。

通过使用角色,您可以按照以下所示将剧本过程拆分。

1
角色└ -  httpd_install└istally-tasks└─-main.main.main.--- mysqld_install└istall└istally--------------------------------------------------i -php_install└-上级└ └前任务└前

每个过程的目录都是在角色下创建的,然后在此下创建了一个任务和处理程序等目录。

最后,实际处理将在main.yml中描述。

以下是/Roles/httpd_install/tasks/main.yml的处理内容。

1
----名称:安装httpd yum:name = httpd state =最新 - 名称:apache start / enable服务:name = httpd state =启动

然后,通过写下剧本,如下所示,您可以调整要适应的处理。

1
-----名称:选择角色主机:ansibleclient3 remote_user:vagrant:是的角色: -  httpd_install-mysqld_install#-emi_repo#-php_install

在这种情况下,将对HTTPD和MySQL的处理进行调整,而评论的处理将无法改编。

使用角色,您可以更容易地操纵比创建单个剧本并轻松管理它。

创建所有剧本一次是可以的,但是如果您有意识地将它们分成角色,则可以在以后重复使用它们,因此建议使用它们。

概括

它怎么样?

我已经开始使用Ansible,但并没有真正了解太多,但是Ansible是如此容易,以至于它可以用于我。

这是如此随意,你们都去散步,所以为什么不第一次开始呢?

感谢您看到最后。

如果您觉得这篇文章有帮助,请点赞!
2
加载中...
2 票,平均:1.00 / 12
29
X Facebook 哈特纳书签 口袋
[2026.6.30 Amazon Linux 2支持端] Amazon Linux服务器迁移解决方案

[2026.6.30 Amazon Linux 2支持端] Amazon Linux服务器迁移解决方案

写这篇文章的人

关于作者

Daimyojin Chiku

它会融化并
冷却
保持在适当的温度