我第一次使用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是如此容易,以至于它可以用于我。
这是如此随意,你们都去散步,所以为什么不第一次开始呢?
感谢您看到最后。