君玉自牧 君玉自牧
首页
  • Linux
  • Nginx
  • MySQL
  • Redis
  • Kafka
  • Docker
  • Jenkins
  • Oneindex
  • Bitwarden
  • Confluence
  • Photogallery
  • 智能手机
  • 上古卷轴
  • 健身记录
  • 站点相关
  • 未完待续
GitHub (opens new window)
首页
  • Linux
  • Nginx
  • MySQL
  • Redis
  • Kafka
  • Docker
  • Jenkins
  • Oneindex
  • Bitwarden
  • Confluence
  • Photogallery
  • 智能手机
  • 上古卷轴
  • 健身记录
  • 站点相关
  • 未完待续
GitHub (opens new window)
  • 技术架构

  • 桌面维护

  • 网络工程

  • 系统运维

    • Linux

      • CentOS 初始化 & 环境准备
      • Linux SSH 服务 & 免密登录
      • Linux 用户权限 & 防火墙
      • Linux 磁盘挂载及交换分区
      • Linux 编辑器:vi & vim
      • Linux 软件包管理
      • Linix 文件共享:FTP、NFS、Samba
      • Linux 定时任务:crontab
      • Linux 系统日志基本管理
      • Linux 系统 Shell 命令
      • 使用 nohup 启动守护进程
      • 使用 pm2 启动守护进程
      • 使用 Ansible 自动化运维
        • 一、安装
          • 1.管理端
          • 2.被控端
        • 二、配置
          • 1.主机
          • 2.命令
          • 3.脚本
        • 三、模块
      • 使用 Puppet 自动化运维
    • Apache

    • Nginx

    • MySQL

    • Redis

    • MQ

    • ELK

    • Nacos

    • PostgreSQL

    • MongoDB

  • 环境搭建

  • 容器编排

  • 持续集成

  • 监控告警

  • 项目实践

  • 脚本开发

  • 前端开发

  • 后端开发

  • 效率工具

目录

使用 Ansible 自动化运维

互联网技术的发展,机房里面机器的数量随之增加,运维的难度和复杂度也在增加,需要投入的运维人员和成本也在增加,从而催生了一系列的自动化运维工具(Ansible、SaltStack、Puppet)的产生来减少运维的成本。

Ansible、SaltStack、Puppet 都是目前比较受用户欢迎的自动化化运维工具,其中 Ansible 和 SaltStack 使用 Python 编写,具有良好的可移植性。Puppet 的使用脚本语法复杂,且可移植性比较差,目前的使用者慢慢变少。

Ansible 和 SaltStack 都是的目前最流行的自动化运维工具,能满足企业 IT 系统的自动化运维管理。

这两个工具都是用 Python 开发的,可以部署到不同的系统环境中和具有良好的二次开发特性。

  • 在执行的命令的时候,Ansible 和 SaltStack 都支持 Ad-hoc 操作模式,也可以支持将命令写入 YAML 文件中再批量执行。
  • 在处理返回结果方面,Ansible 和 SaltStack 的返回结果格式都是 JSON 格式,比较易懂和方便解析。

https://getansible.com/begin/an_zhuang_ansile (opens new window)

# 一、安装

# 1.管理端

安裝 Ansible

#Redhat/CentOS Linux 上,Ansible 目前放在的 epel 源中,Fedora 默认源包含 Ansible
sudo yum install epel-release 
sudo yum install ansible -y 
1
2
3

配置 Ansible 管理节点和主机的连接,就是配置从管理节点到远程主机之间基于 Key 的 SSH 连接(免密登录):

#生成 ssh key
ssh-keygen
#拷贝 ssh key 到远程主机,ssh 的时候就不需要输入密码了
ssh-copy-id user@ip
#ssh 的时候不会提示是否保存 key
ssh-keyscan ip >> ~/.ssh/known_hosts
1
2
3
4
5
6

运行 ssh 命令,既不需要输入密码,也不会提醒存储 key,就表示配置成功

ssh user@ip
1

# 2.被控端

不需要安装特殊的包,只需要 Python > 2.4,RedHat 系列 Linux 一般安装方式都是默认安装的。

# 二、配置

# 1.主机

Host Inventory 是配置文件,用来告诉 Ansible 需要管理哪些主机,并且把这些主机进行分类 默认的文件是: /etc/ansible/hosts

#最简单的 hosts 文件:
192.168.1.50
aserver.example.org
bserver.example.org

#带分类的 hosts 文件:
mail.example.com
[webservers]
foo.example.com
bar.example.com

[dbservers]
one.example.com
two.example.com
three.example.com
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 2.命令

Ansible 提供了一个命令行工具,在官方文档中起给命令行起了一个名字叫 Ad-Hoc Commands。

ansible <host-pattern> [options]

#检查环境
#检查所有的远程主机,是否以 app 用户创建了 ansible 主机可以访问的环境
ansible all -m ping -u app

#执行命令
#在所有的远程主机上,以当前 bash 的同名用户,在远程主机执行“echo bash”
ansible all -a "/bin/echo hello"

#拷贝文件
#拷贝文件 /etc/host 到远程主机(组)web,位置为 /tmp/hosts
ansible web -m copy -a "src=/etc/hosts dest=/tmp/hosts"

#安装包
#远程主机(组)web 安装 yum 包 acme
ansible web -m yum -a "name=acme state=present"

#添加用户
ansible all -m user -a "name=foo password=<crypted password here>"

#下载 git 包
ansible web -m git -a "repo=git://foo.example.org/repo.git dest=/srv/myapp version=HEAD"

#启动服务
ansible web -m service -a "name=httpd state=started"

#并行执行
启动 10 个并行进行执行重起
ansible lb -a "/sbin/reboot" -f 10

#查看远程主机的全部系统信息
ansible all -m setup
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

# 3.脚本

为了避免重复输入命令,Ansible 提供脚本功能;Ansible 脚本的名字叫 Playbook,使用的是 YAML 格式(与 JSON 类似,是一种表示数据的格式),文件后缀 .yml。

ansible-playbook deploy.yml

---
#安装 apache 的 play
- hosts: Web
  remote_user: root
  tasks:
  - name: nginx
    yum: pkg=nginx state=latest

# 安装 mysql server 的 play
- hosts: db
  remote_user: root
  tasks:
  - name: mysqld
    yum: pkg=mariadb state=latest
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 三、模块

网页编辑 (opens new window)
最近提交: 2023/03/22, 11:52:35
使用 pm2 启动守护进程
使用 Puppet 自动化运维

← 使用 pm2 启动守护进程 使用 Puppet 自动化运维→

Theme by Vdoing | Copyright © 2011-2023 | 君玉自牧
粤ICP备15057965号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式