1.Ansible简介Ansible是一个开源的配置管理引擎,使用Python编写,是一个无代理的解决方案,通过默认的OpenSSH连接到一个受控节点。由Cobbler的作者和Func框架的合作者Michael DeHaan开发。Ansible于2015年10月被开源巨头RedHat收购,希望未来Ansible能结合RedHat系统发挥巨大作用。只需要在一台主控vps上安装 ansible (我这是爪云) 其他vps只需要完成相互之间免密登录即可2.安装Ansiblecentos系列yum -y install ansibledebian系列apt install ansible只需要在主控机上执行即可 (仅爪云,想在多安装几台也不影响)3.Ansible基本配置ansible主机和主机组定义默认定义主机的文件为/etc/ansible/hosts192.168.1.210test2.elisun.com[test]11111.xyz ansible_port=20000 ansible_user=root[node]11111.xyz ansible_port=20000 ansible_user=root11112.xyz ansible_port=20000 ansible_user=root11113.xyz ansible_port=20000 ansible_user=root[centos]1111.xyz ansible_port=20000 ansible_user=root1113.xyz ansible_port=20000 ansible_user=root1114.xyz ansible_port=20000 ansible_user=root[all]11111.xyz ansible_port=20000 ansible_user=root11112.xyz ansible_port=20000 ansible_user=root11113.xyz ansible_port=20000 ansible_user=root1114.xyz ansible_port=20000 ansible_user=root定义规则:主机可以用域名、IP、别名进行标识,[node]、[all]为组名,组名的下方为组的成员,所以对于单个主机来说,一定要靠上写。可以使用通配符、范围等表示主机群(例如test[1:2].elisun.com,表示两个主机)。支持组嵌套,父组名+":children",如[WebsAndDbs:children],其下跟上要包含的组名,可以用"ansible WebsAndDbs --list-hosts"命令列出其下包含的主机。翻译一下就是 单个ip你就直接第一行写,例如上面多个ip你就【组名】下跟着 域名或者ip很多同学都改了ssh默认端口号 那就按照下列写法1114.xyz ansible_port=20000 ansible_user=root你的域名或者ip 你的ssh端口 你的ssh用户名默认ssh端口是22 那就直接写域名或者ip 参考192.168.1.210 test2.elisun.com这两行4.所有节点配置免密假设你已经有了 私钥id.rsa 与公钥把私钥放进 /root/.ssh/下 将公钥内容粘贴进/root/.ssh/authorized_keys中 如下root@localhost ~/.ssh # ls -larttotal 36-rw-r--r-- 1 root root 381 Oct 15 18:23 authorized_keys-rw------- 1 root root 6738 Oct 24 20:21 known_hosts.old-rw------- 1 root root 7352 Oct 24 23:39 known_hosts-rwx------ 1 root root 1675 Nov 1 16:57 id_rsa-rw-r--r-- 1 root root 712 Nov 1 17:49 configdrwx------ 5 root root 4096 Nov 1 18:01 ..drwx------ 2 root root 4096 Nov 1 18:04 .注意私钥权限哦5.进行测试ansible 主机 -m 模块名 -a '模块参数'root@localhost ~ # ansible centos -m ping1111.xyz | SUCCESS => {"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"}1113.xyz | SUCCESS => {"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"}1114.xyz | SUCCESS => {"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"}命令解释 ansible centos -m ping 意思就是 在爪云这台机器上对centos组下的所有主机使用ping模块验证vps连通性再翻译一下 爪云分别对1111.xyz 1113.xyz 1114.xyz 发了一个ping 它三回一个pong 表示主机连接没问题 有问题建议自查6.使用shell模块进行测试ansible有很多的模块 具体模块用法大家可以去百度一下 下面以常用的模块shell模块举例root@localhost ~ # ansible test -m shell -a 'systemctl status docker'11111.xyz | CHANGED | rc=0 >>● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2024-11-01 18:52:48 CST; 14s ago Docs: https://docs.docker.comMain PID: 9125 (dockerd)Tasks: 54Memory: 62.0M CGroup: /system.slice/docker.service ├─9125 /usr/bin/dockerd
├─9131 containerd --config /var/run/docker/containerd/containerd.toml
├─9335 /usr/bin/containerd-shim-runc-v2 -namespace moby -id fe96b6efc5cdcfeb08668c56bfea4f947de6d6d613bb66aee2e1ffbce96cdf33 -address /var/run/docker/containerd/containerd.sock
├─9378 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 964e9efe7ab722216313223e2362e5ccec65cddd87e8a43145accdcee41cc00c -address /var/run/docker/containerd/containerd.sock
└─9391 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 43df061daf9178ae6bda9934c56d8726e773e5716c73cafeaa3978a5663a2d4f -address /var/run/docker/containerd/containerd.sock
Nov 01 18:52:48 ty dockerd[9125]: time="2024-11-01T18:52:48.403126252+08:00" level=info msg="loading plugin "io.containerd.ttrpc.v1.pause"..." runtime=io.containerd.runc.v2 type=io.containerd.ttrpc.v1Nov 01 18:52:48 ty dockerd[9125]: time="2024-11-01T18:52:48.425557838+08:00" level=info msg="loading plugin "io.containerd.event.v1.publisher"..." runtime=io.containerd.runc.v2 type=io.containerd.event.v1Nov 01 18:52:48 ty dockerd[9125]: time="2024-11-01T18:52:48.425646526+08:00" level=info msg="loading plugin "io.containerd.internal.v1.shutdown"..." runtime=io.containerd.runc.v2 type=io.containerd.internal.v1Nov 01 18:52:48 ty dockerd[9125]: time="2024-11-01T18:52:48.425665903+08:00" level=info msg="loading plugin "io.containerd.ttrpc.v1.task"..." runtime=io.containerd.runc.v2 type=io.containerd.ttrpc.v1Nov 01 18:52:48 ty dockerd[9125]: time="2024-11-01T18:52:48.425766433+08:00" level=info msg="loading plugin "io.containerd.ttrpc.v1.pause"..." runtime=io.containerd.runc.v2 type=io.containerd.ttrpc.v1Nov 01 18:52:48 ty dockerd[9125]: time="2024-11-01T18:52:48.575843455+08:00" level=info msg="Loading containers: done."Nov 01 18:52:48 ty dockerd[9125]: time="2024-11-01T18:52:48.606716377+08:00" level=info msg="Docker daemon" commit=f9522e5 containerd-snapshotter=false storage-driver=overlay2 version=27.1.2Nov 01 18:52:48 ty dockerd[9125]: time="2024-11-01T18:52:48.606793333+08:00" level=info msg="Daemon has completed initialization"Nov 01 18:52:48 ty dockerd[9125]: time="2024-11-01T18:52:48.649794032+08:00" level=info msg="API listen on /var/run/docker.sock"Nov 01 18:52:48 ty systemd[1]: Started Docker Application Container Engine.ansible 主机 -m 模块名 -a '模块参数'即 使用ansible 控制 test组下的vps 1111.xyz 使用shell模块 执行 systemctl status docker 命令7.总结一下可以使用其他不同的模块命令来进行测试 至于剧本啥的 没啥说的 懂得原理问caht就行 某些方面来说和moba的多重执行有点相似优点嘛足够轻量,只需要安装在主控机就行 被控鸡无需任何安装(确保免密正常即可)批量执行神器缺点就是还是要记一点模块命令的 笨就默认用shell模块了 你要问我 费劲巴拉的搞这个还不如我开多重执行直接秒了 那我只能说 牛爷爷偷偷复习一下 不能忘了 记录一下 鸡少就用多重执行 不管黑丝白丝 只要是吧你懂的 那就是好丝如有错误欢迎指正