Ansible简介

编程入门 行业动态 更新时间:2024-10-10 12:18:13

Ansible<a href=https://www.elefans.com/category/jswz/34/1769824.html style=简介"/>

Ansible简介

环境

  • 控制节点:Ubuntu 22.04
  • Ansible 2.10.8
  • 管理节点:CentOS 8

组成

Ansible环境主要由三部分组成:

  • 控制节点(Control node):安装Ansible的节点,在此节点上运行Ansible命令
  • 管理节点(Managed node):Ansible所控制的节点
  • 主机清单(Inventory):我们一般通过Ansible来管理多个远程节点,那么就需要把所有的节点在逻辑上组织起来,比如按照功能划分为若干个组。控制节点通过inventory来管理远程节点

官网( .html )提供的架构如下图所示:

特点

用途:

  • 消除重复,简化流程
  • 管理维护系统配置
  • 持续部署复杂软件
  • 零宕机滚动更新(rolling update)

优点:

  • 无代理架构:远程节点无需安装额外的软件,维护的开销很小(主控节点通过SSH访问远程节点)
  • 简单性:playbook使用YAML语法
  • 伸缩性和灵活性:简易且快速
  • 幂等性和可预测性:playbook可多次运行,如果系统已处于目标状态,则再次运行也没有变化

安装

apt install ansible

环境搭建

注:下面都是使用root用户。

首先需要一个inventory文件,默认文件为 /etc/ansible/hosts ,也可以使用 -i 参数来显式指定。

创建文件 /etc/ansible/hosts ,内容如下:

[myvms]
192.168.1.55

运行 ansible all --list-hosts ,如下:

➜  ansible ansible all --list-hostshosts (1):192.168.1.55

接下来,和远程节点建立SSH连接。

把主控节点的private key(一般是 ~/.ssh/id_rsa 文件)复制到远程节点的 ~/.ssh/authorized_keys/ 目录下(如果本地没有就用 ssh-keygen -t rsa 生成一下),可以用 ssh-copy-id root@<host> 来复制。

注:ansible可用 -u 参数指定登录用户名。

测试一下 ssh root@192.168.1.55 ,确保可以免密登录。

注: root@ 可以省略,但本地必须是root用户(因为复制时两端都使用的root用户)。

接下来用 ansible all -m ping 测试连通性:

➜  ~ ansible all -m ping
192.168.1.55 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false,"ping": "pong"
}

命令行(ad-hoc)和playbook

命令行(ad-hoc)

其语法为:

ansible [pattern] -m [module] -a "[module options]"

下面是一个“Hello World”例子:

➜  ~ ansible all -m debug -a "msg='hello world'"
192.168.1.55 | SUCCESS => {"msg": "hello world"
}

Playbook

  • Playbook:由一系列play组成
  • Play:由一系列task组成
  • Task:由一系列module组成
  • Module:Ansible运行的代码单元,每个module有一个Fully Qualified Collection Name (FQCN)

其语法为:

ansible-playbook -i /path/to/my_inventory_file -u my_connection_user -k -f 3 -T 30 -t my_tag -M /path/to/my_modules -b -K my_playbook.yml

其中:

  • -i :指定inventory文件
  • -u :指定SSH连接用户名
  • -k :询问SSH连接密码
  • -f :指定N个fork
  • -T :设置超时时间(秒)
  • -t :只运行指定tag的task
  • -M :从指定路径载入本地module
  • -b :executes with elevated privileges (uses become)
  • -K :prompts the user for the become password.

例:

创建 playbook1.yml 文件,内容如下:

- name: Hello ansiblehosts: alltasks:- name: PingPingPingansible.builtin.ping:- name: Say helloansible.builtin.debug:msg: Hello world

运行:

➜  ansible ansible-playbook playbook1.ymlPLAY [Hello ansible] *******************************************************************************TASK [Gathering Facts] *****************************************************************************
ok: [192.168.1.55]TASK [PingPingPing] ********************************************************************************
ok: [192.168.1.55]TASK [Say hello] ***********************************************************************************
ok: [192.168.1.55] => {"msg": "Hello world"
}PLAY RECAP *****************************************************************************************
192.168.1.55               : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

帮助

方法1:官网

.html

方法2:命令行

  • ansible -h :查看 ansible 用法
  • ansible-doc <plugin> :查看指定plugin用法,例如 ansible-doc ping
    注:可用 ansible-doc -h 查看 ansible-doc 用法。

更多推荐

Ansible简介

本文发布于:2023-12-03 13:31:30,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1655884.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:简介   Ansible

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!