Ansible 从入门到实战

简介

基于python开发,能够实现批量系统配置、程序部署、运行命令等功能的自动化运维工具

基本框架

Ansible :运行在中央计算机上;
Connection Plugins :连接插件,主要用于本地与操作端之间的连接与通信;
Host Inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
Modules:核心模块、自定义模块等等;
Plugins :使用插件来完成记录日志、邮件等功能;
Playbooks:执行多任务,通过 SSH 部署模块到节点上,可多个节点也可以单个节点

安装

sudo apt install -y ansible

# 验证安装
ansible --version

Inventory

Ansible 能够同时对单台或多台机器亦或部分机器操作是通过Inventory 来发现机器
Inventory 默认保存在 /etc/ansible/hosts 配置文件中

# 主机连接
ansible_connection 连接到主机的类型,任何可能的连接插件名称,例如,SSH 协议类型中有:ssh、smart 或 paramiko


# 一般连接
ansible_host 连接的主机名称
ansible_port ssh端口号
ansible_user 默认 ssh用户名

# 具体的 SSH 连接
ansible_ssh_pass ssh密码
ansible_ssh_private_key_file ssh使用的私钥文件

playbook

简介

一种格式为yaml的声明式配置文件
用于ansible配置主机部署相关的资源(部署机器、部署动作等)

基本结构

Playbook 是由一个或多个 task 组成
一个task里面包含若干个模块
---
- hosts: host1,host2,... # 表示一个或多个主机或组
  remote_user: root      # 表示远程登录用户名
  become: yes            # 表示允许权限提升,而默认提权用户为 root, 如果不希望以 root 身份执行任务,则要用到另一个关键词 become_user, become_user 决定的是执行任务的用户身份
  vars:                  # 变量的定义
    http_port: 80
  tasks:                 # 任务组
    - name: Install the package "bc"  # 一般一个任务一个name
      apt:
        name: bc
        state: present
  handlers:
  - name: restart bc
      service:
        name: bc
        state: restarted
...

简单上手

---
- hosts: localhost
  tasks:
    - name: test connection
      ping: # ping 模块
...
$ ansible-playbook ping.yaml     

PLAY ***************************************************************************

TASK [setup] *******************************************************************
ok: [localhost]

TASK [test ping] ***************************************************************
ok: [localhost]

PLAY RECAP *********************************************************************
localhost                  : ok=2    changed=0    unreachable=0    failed=0

不知名公司IT从业者一枚

19 声望
1 粉丝
0 条评论
推荐阅读
Nginx - 上手到精通(持续更新中)
简介 {代码...} 架构由内核 和 一系列模块组成内核 {代码...} 模块 {代码...} 安装 {代码...} 守护进程 {代码...} 优化主要通过设置/etc/nginx/nginx.conf来实现顶层配置 {代码...} events配置 {代码...} http配...

BewaterMyfriends阅读 317

Ubuntu20.04 从源代码编译安装 python3.10
Ubuntu 22.04 Release DateUbuntu 22.04 Jammy Jellyfish is scheduled for release on April 21, 2022If you’re ready to use Ubuntu 22.04 Jammy Jellyfish, you can either upgrade your current Ubuntu syste...

ponponon1阅读 4k评论 1

日常Python 代码片段整理
1、简单的 HTTP Web 服务器 {代码...} 2、单行循环List {代码...} 3、更新字典 {代码...} 4、拆分多行字符串 {代码...} 5、跟踪列表中元素的频率 {代码...} 6、不使用 Pandas 读取 CSV 文件 {代码...} 7、将列表...

墨城2阅读 340

Unicode 正则表达式(qbit)
前言本文根据《精通正则表达式》和 Unicode Regular Expressions 整理。本文的示例默认以 Python3 为实现语言,用到 Python3 的 re 模块或 regex 库。基本的 Unicode 属性分类 {代码...} 基本的 Unicode 子属性Le...

qbit阅读 4.4k

Python + Sqlalchemy 对数据库的批量插入或更新(Upsert)
由于不同数据库对这种 upsert 的实现机制不同,Sqlalchemy 也就不再试图做一致性的封装了,而是提供了各自的方言 API,具体到 Mysql,就是给 insert statement ,增加了 on_duplicate_key_update 方法。

songofhawk1阅读 2.1k评论 4

封面图
打脸了兄弟们,Go1.20 arena 来了!
大家好,我是煎鱼。大概半年前,我写过一篇文章《Go 要违背初心吗?新提案:手动管理内存》。有兴趣了深入解的同学,可以再回顾一下。当时我们还想着 Go 团队应该不会接纳,至少不会那么快:懒得翻也可以看我再次...

煎鱼1阅读 3.3k

uwsgi 注意事项
http 和 http-socket 选项是完全不同的。第一个生成一个额外的进程,转发请求到一系列的worker (将它想象为一种形式的盾牌,与apache或者nginx同级),而第二个设置worker为原生使用http协议。

zed2015阅读 2.2k

不知名公司IT从业者一枚

19 声望
1 粉丝
宣传栏