一文了解Ansible原理以及常见使用模块

ansible使用手册

1. 简述

Ansible 是一种开源的自动化工具,主要用于配置管理、应用程序部署和任务自动化。
它使用简单的 YAML 语言来定义自动化的任务【playbook】,使得配置和部署变得更加直观和易于管理。
基于SSH协议连接到远程主机来执行指令。

2. ansible特性

1.丰富的模块化管理
2.通过yaml格式 编写playbok批量部署服务
3.基于OpenSSH服务相对比较安全,它不需要在被管理的主机上安装代理软件。
4.一个任务执行一次和执行多次的结果相同
5.管理模式容易,一条命令可以影响上千台主机

3. 架构

● 控制节点:运行 Ansible 的机器。
● 被管理节点:需要被配置或管理的机器。
● 清单文件:定义了 Ansible 要管理的主机和主机组。
● Playbook:用 YAML 编写的配置文件,定义了如何配置和管理主机。
● 角色:组织 Playbook 的一种方式,可以将任务、变量和文件等封装在一个模块中。
在这里插入图片描述

4. Ansible 基本概念

●清单(Inventory):列出所有被管理的主机或主机组的文件。默认位置是 /etc/ansible/hosts,可以自定义路径。

vim /opt/ansible/Inventory/all_hosts
[hosts]
10.127.192.5
10.127.192.195

[node]
10.127.192.195

[webservers]
10.127.192.5

[all:vars]
# root可以直连
#ansible_ssh_user="root"
#ansible_ssh_pass="xxxxx"

# 非root用户sudo
ansible_user=dev01
ansible_ssh_pass='d5qAPDG^F6rA*C9p'
ansible_become=True
ansible_become_method=sudo

●Playbook:定义任务的执行步骤,使用 YAML 格式。每个 Playbook 可以包含多个 plays,每个 play 针对一组主机执行任务。
例如:如下,利用ansible-playbook安装apache服务

vim install_apache.yml
---
- name: Install and configure Apache
  hosts: webservers
  become: yes
  tasks:
    - name: Install Apache package
      apt:
        name: apache2
        state: present
        update_cache: yes

    - name: Ensure Apache is running and enabled
      service:
        name: apache2
        state: started
        enabled: yes

    - name: Copy a custom index.html file
      copy:
        src: index.html
        dest: /var/www/html/index.html
        owner: www-data
        group: www-data
        mode: '0644'

执行ansible-playbook指令

ansible-playbook -i ./inventory/all_hosts install_apache.yml

●任务(Task):在 Playbook 中定义的具体操作步骤,如安装软件、启动服务等。
●角色(Role):用来组织 Playbook,使其更具可重用性和模块化。每个角色包含任务、处理程序、文件、模板等。

5.常用的Ansible模块

5.1. 文件模块

copy:将文件从本地复制到远程主机
template:将本地文件复制到远程主机上,并进行变量替换
file:管理文件和目录,如创建、删除、修改等操作
fetch:从远程主机上获取文件

5.2. 系统模块

command:在远程主机上执行命令
shell:在远程主机上执行 shell 命令

5.3. 包管理模块

yum:管理CentOS和RedHat等Linux系统上的软件包

5.4. 服务模块

service:管理系统服务,如启动、停止、重启、重载等操作
firewalld:管理防火墙中的服务和端口

5.5. 用户模块

user:管理系统用户和用户组,如创建、删除、修改等操作
group:管理系统用户组,如创建、删除、修改等操作

5.6. 调试和测试类模块

ping:ping 一下你的远程主机,如果可以通过Ansible连接成功,那就范围 pong。
debug:用于调试的模块,只是打印一些简单消息,有点像Linux的 echo命令

6. 模拟测试

6.1. 测试网络连接连接

ansible all -m ping
ansible hosts -m ping

6.2. 命令测试

1. shell模块
ansible -i ./inventory/ hosts -m shell -a "ls"
2. command模块
ansible -i ./inventory/ hosts -m command -a "ls"

command模块和shell模块不同之处
command模块不支持"&&“和”>>"

如下可显示:
在这里插入图片描述

3. yum模块
ansible -i ./inventory/ hosts -m yum -a "name=rsync state=present"
4. copy模块

使用Ansible的copy模块复制文件到远程主机:

ansible all -m copy -a 'src=/etc/hosts dest=/tmp/hosts'
5. service模块

使用Ansible的service模块管理服务:

ansible all -m service -a 'name=httpd state=started'
6. user模块

使用Ansible的user模块管理用户:
创建user用户

ansible all -m user -a 'name="testuser" state=present'

删除用户

ansible all -m user -a 'name="testuser" state=absent'

6.3. playbook测试

ansible-playbook -i ./inventory/all_hosts apache.yaml

利用ansible-playbook部署完后,可用如下检测是否安装成功

ansible -i ./inventory/ hosts -m shell -a "systemctl status httpd"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听说唐僧不吃肉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值