ansible运维自动化环境搭建

本文详细介绍Ansible自动化运维工具的核心组件、环境搭建流程、常见命令使用及Playbooks配置管理实践,展示如何通过Ansible实现高效、一致的系统管理和部署。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ansible是开源工具,底层是用python写的

ansible也有web界面,可以直接鼠标点就可以,但是web界面收费

所以大部分企业不会用web界面

 

 

 

AnsibleAnsible的核心程序

Host Lnventory记录了每一个由Ansible管理的主机信息,信息包括ssh端口,root帐号密码,ip地址等等。可以通过file来加载,可以通过CMDB加载

PlaybooksYAML格式文件,多个任务定义在一个文件中,使用时可以统一调用,“剧本”用来定义那些主机需要调用那些模块来完成的功能.

Core ModulesAnsible执行任何管理任务都不是由Ansible自己完成,而是由核心模块完成;Ansible管理主机之前,先调用core Modules中的模块,然后指明管理Host Lnventory中的主机,就可以完成管理主机。

Custom Modules自定义模块,完成Ansible核心模块无法完成的功能,此模块支持任何语言编写。

Connection Plugins连接插件,Ansible和Host通信使用

 

Ansible的优点:

  • Stupied Simple ,上手简单,学习曲线平滑
  • SSH by default ,安全,无需安装客户端
  • 配置简单、功能强大、扩展性强
  • 支持API及自定义模块,可通过Python轻松扩展
  • 通过Playbooks来定制强大的配置、状态管理
  • 提供一个功能强大、操作性强的Web管理界面和REST API接口——AWX平台
  • 幂等性:同样的操作不会重复执行,只会将改变了的再次执行。

 

Ansible的环境搭建:

需要2+台虚拟机,我是用三台虚拟机为大家讲解;

一台为ansible端,其余为client,测试使用。

前提关闭防火墙,在一个网段,可以互相ping通。

ansible端:

1.安装扩展软件包源和ansible软件包:

# yum -y install epel-release

# yum clean all

# yum makecache

# yum -y install ansible

2.编辑ansible配置文件:(设置无密码登录)

3.在三台虚拟机上执行创建密钥命令

# ssh-keygen

会生成两个文件,公钥和私钥

 

4.然后将公钥文件拷贝在测试机上并指定路径(路径是规定,就得这么写)

# scp id_rsa.pub root@192.168.29.138:/root/.ssh/authorized_keys

测试:ssh连接客户机ip,不需要输入密码就成功!

# ssh 客户机ip

# ssh 192.168.29.139

5.配置文件:/etc/ansible/hosts:记载着需要管理的主机的信息

添加组:

[xxxx] ——可以随意命名,但是后期要调用,尽量有象征性的命名;

192.168.29.137 ——需要管理的客户机的IP(也可以写域名)

192.168.29.138 ——需要管理的客户机的IP

 

 

6.测试:查看管理的两个主机通不通

# ansible group -m ping

 

 

7.ansible的简单命令使用:

·ansible-doc -l #查看支持的模块(命令)

·ansible-doc -s yum #查看yum模块用法

·nsible命令应用基础

ansible <host-pattern> [options]

      -f forks:启动并发线程数

      -m model_name:要使用的模块

      -a args:特有的参数

·查看client端是否正常ping通

ansible all -m ping

·查看客户端信息

ansible group -m setup

 

格式:ansible 组名/all -m 指定模块 -a '操作'

·copy服务器的1.sh文件到cient端的指定路径下

ansible group -m copy -a 'src=/root/1.sh dest=/root/test'

·创建test用户

ansible group -m user -a "name=test state=present" 

·删除test用户

ansible group -m user -a "name=test state=absent"

·yum安装

ansible group -m yum -a 'name=tree state=latest'

·停止httpd服务

ansible group -m service -a 'name=httpd state=stopped enabled=no'

·运行脚本

ansible group -m script -a '/tmp/test.sh'

·查看时间,是ansible默认模块,可以不指定模块。

ansible group -m command -a 'date'

playbook剧本:

playbook是运用ansible的一种非常强大的方式,是由多个play组成。

简单来说,playbooks 是一种简单的配置管理系统与多机器部署系统的基础.与现有的其他系统有不同之处,且非常适合于复杂应用的部署.

 

一下范例中的格式必须严格遵守,必须的必。

例一:基础

 

 

 

例二:变量

定义变量: vars

变量名=变量

调用变量:{{ 变量名 }}

 

例三:迭代

whith_item:要写在当前name的最下面

 

 

例四:触发器notify

 

 

 

例五:模板文件templates

先复制一个httpd.conf文件在主server任意目录下,

修改配置文件,调用变量,将端口号改为 {{ port }}

 

 

修改配置文件:/etc/ansible/hosts,指定两个客户机的端口

 

在两个客户端 ss -tnl 查看端口:

 

例六:单个任务执行tags

调用:ansible xxx.yml tags='add_user'

 

 

 

例七:角色roles:代码复用

mkdir -pv ansible_playbooks/roles/{webservers,dbservers}/{tasks,files,templates,meta,handlers,vars}

 

 

 

拓展:epel源 EPEL 是yum的一个软件源,里面包含了许多基本源里没有的软件了,但在我们在使用epel时是需要安装它才可以了,EPEL,即Extra Packages for Enterprise Linux的简称,是为企业级Linux提供的一组高质量的额外软件包,

安装之前:yum repolist

 

安装后:软件包多了很多

 

转载于:https://www.cnblogs.com/dayle/p/9961894.html

搭建Ansible自动化运维框架涉及多个关键步骤,包括环境准备、配置管理、Playbook编写和最佳实践应用。以下是详细的步骤指南: ### 环境准备 1. **安装Ansible** 在CentOS系统上,可以通过EPEL仓库安装Ansible。首先确保系统已启用EPEL仓库,然后执行以下命令[^3]: ```bash sudo yum install -y ansible ``` 2. **配置SSH无密码登录** Ansible依赖于SSH协议进行通信,因此需要在控制节点与被管理节点之间配置SSH无密码登录。可以使用`ssh-keygen`生成密钥,并将公钥添加到被管理节点的`~/.ssh/authorized_keys`文件中。 3. **安装基础环境** 在所有被管理节点上安装必要的软件包,如YUM、SSH和Python: ```bash sudo yum install -y openssh-server python ``` ### 配置Ansible 1. **编辑Ansible配置文件** Ansible的主要配置文件是`/etc/ansible/ansible.cfg`。可以根据需求修改该文件中的参数,例如并发数、日志路径等。 2. **定义主机清单(Inventory)** 主机清单文件通常位于`/etc/ansible/hosts`,用于定义被管理节点的分组信息。可以按如下格式定义: ``` [webservers] 192.168.1.10 192.168.1.11 [dbservers] 192.168.1.20 ``` ### 编写Playbook 1. **创建第一个Playbook** Playbook是Ansible的核心概念之一,用于描述任务集合。以下是一个简单的Playbook示例,用于安装并启动Apache服务: ```yaml --- - name: Install and start Apache on webservers hosts: webservers become: yes tasks: - name: Install Apache yum: name: httpd state: present - name: Start Apache service service: name: httpd state: started enabled: yes ``` 2. **执行Playbook** 使用`ansible-playbook`命令执行上述定义的Playbook: ```bash ansible-playbook -i /etc/ansible/hosts apache_setup.yml ``` ### 最佳实践 1. **模块化设计** 将任务分解为多个小的Playbook或角色(Role),以便复用和维护。每个角色应专注于单一功能。 2. **版本控制** 使用Git等版本控制系统管理Ansible代码,确保每次更改都有记录,便于回滚和协作。 3. **安全性** 确保敏感信息(如密码)不直接暴露在Playbook中,可以使用Ansible Vault加密敏感数据。 4. **测试与验证** 在生产环境中部署前,应在测试环境中验证Playbook的有效性和安全性。 5. **文档化** 编写详细的文档,说明每个Playbook的功能、依赖项和执行步骤,方便团队成员理解和使用。 ### 示例:使用Ansible进行CI/CD流程中的自动化测试 在CI/CD流程中,Ansible可以用于自动化测试。以下是一个简单的测试脚本示例,使用Ansible执行测试用例[^2]: ```yaml --- - name: Run automated tests hosts: test_servers gather_facts: no tasks: - name: Checkout code from repository git: repo: 'https://github.com/example/project.git' dest: '/opt/project' - name: Run unit tests command: pytest /opt/project/tests/unit/ ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值