Ansible搭建

╄→尐↘猪︶ㄣ 提交于 2019-12-02 23:44:02

实验环境:

操作系统 IP地址 角色 主机名 CPU核心
CentOS7.5 192.168.96.4 Ansible ansible 1
CentOS7.5 192.168.96.5 Client client1 1
CentOS7.5 196.168.96.6 Client client2 2

环境准备:

hostname ansible

bash

hostname client1

bash

hostname client2

bash

三台机器均关闭防火墙

[root@ansible ~]# setenforce 0
[root@ansible ~]# systemctl stop firewalld
[root@ansible ~]# hostname ansible

==================================================================

Ansible:

 vim /etc/hosts

添加

192.168.96.4 ansible
192.168.96.5 client1
192.168.96.6 client2

 

scp /etc/hosts 192.168.96.5:/etc/

scp /etc/hosts 192.168.96.6:/etc/

YUM方式安装ansible

cd /etc/yum.repos.d/

wget http://mirrors.aliyun.com/repo/Centos-7.repo

yum clean all        //清除yum缓存

 

 yum -y install ansible

ansible --version       //测试可以显示信息表示安装成功

 创建SSH面交互登录:

Ansible机器操作:

ssh-keygen -t rsa -P "" -f .ssh/id_rsa

 

 

 Client1端环境准备;

setenforce 0
systemctl stop firewalld

Client2端环境准备;

setenforce 0
systemctl stop firewalld

Ansible端向Client1和2发送密钥对:

ssh-copy-id root@192.168.96.5

ssh-copy-id root@192.168.96.6

Ansible配置:

vim /etc/ansible/hosts 

写入

[crushlinux]
192.168.96.5
192.168.96.6

ansible crushlinux -m ping       //环境已经搭好

 

 

 ansible crushlinux -a "df -TH"         //查两台机器的磁盘

 

 

 基于sshpass分布秘钥:

rm -rf .ssh/authorized_keys       //先删除之前的秘钥,以便在后边做对比

安装sshpass:

 

 

 删除秘钥后需要输入密码才可以连接

 yum -y install sshpass         //安装sshpass

sshpass -p 000000 ssh root@192.168.96.5

使用sshpass向两台机器发送密码

sshpass -p 000000 ssh-copy-id root@192.168.96.5

sshpass -p 000000 ssh-copy-id root@192.168.96.6

 

 如上图所示此时发送秘钥已经不存在交互问题。

第一次连接会手动输入yes,ssh解决不了。

去掉yes过程的方法一

sshpass -p 000000 ssh -o StrictHostKeyChecking=no root@192.168.96.5(第一次连接会手动输入yes,ssh解决不了;按照此格式便可以解决)

去掉yes过程的方法二 

vim /etc/ssh/ssh_config    //进入文档修改35行为no

编辑文档后发不发key都可以

vim /etc/ansible/hosts        //进入文档添加下面内容

[nokey]
client2 ansible_ssh_host=192.168.96.6 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=000000

ansible nokey -m ping       //修改后ping一下

 

 

client2=主机名

ansible_ssh_host=主机ip

ansible_ssh_port=ssh的默认端口

ansible_ssh_user=ssh的用户名

ansible_ssh_pass=ssh用户的连接密码

 如果使用默认的lnventory文件{/etc/ansible/hosts} ,也可以不用指定lnvenntory文件默认就是

Ansible通过设备列表以分组的方式添加到/etc/ansible/hosts文件来实现对设备的管理,正式管理前先编写hosts文件,hosts文件中以[ ]包含的部分代表组名;

vim /etc/ansible/hosts        //进入文档添加下面内容

ansible nokey -m ping       //修改后ping一下

ansible test01 -m ping       //修改后ping一下

添加的内容;

[client]
client1
client2

 

[test01]
client[1:2]

===================================================================================

Ansible语法:

ansible crushlinux -m command -a " "       //在“ ” 中可以执行shell命令(-m指定模块   -a指定shell命令)

ansible crushlinux -m command -a "free -m"         //查询crushlinux组内主机内存

 

 ansible crushlinux -a "free -m"        //可以不写 command  ,默认模块就是 command 

 

 ansible crushlinux -a "free -m" --limit 192.168.96.6         //只限制192.168.96.6执行命令(--limit指定组内某个成员执行)

 

 ansible 192.168.96.6 -a "free -m"              //直接对hosts文件主机IP执行命令

 

 ansible 192.168.96.* -a "free -m"             //对hosts文件96网段的执行命令

 

 

 Ansible命令:

ansible       //双击tab键(使用最多的为ansible-playbook和ansible)

 

 ansible时生产环境中使用非常频繁的命令之一,主要在一下场景应用

1.非固化需求(指的是临时性的维护,如查看服务器组的磁盘使用情况,复制一个文件到其他机器等没有规律的、临时需要做的任务)

2.临时一次性操作

3.二次开发接口调用

非固化需求语法;

ansible<主机>[参数]

 

 

 

 

ansible all -m ping        //hosts文件内所有主机

 

 ansible client1:client2 -m ping        //clent1he clent2

 ansible client:\!client2 -m ping

 

检查所有主机是否存活

 ansible all -f 5 -m ping

 

列出crushlinux组内所有主机 

ansible crushlinux --list-host

 

 ansible crushlinux --list

 

 批量显示crushlinux组内的磁盘使用情况

crushlinux需要提前在/etc/ansible/hosts文件中定义组

ansible的返回结果会用三种颜色来表示执行结果:

红色表示执行过程中有异常

橘黄色表示命令执行后目标有状态变化

绿色表示执行成功且没有对目标机器做修改

 

 ansible-doc -l        //查看总帮助(敲完命令会卡顿一会)

 

  ansible-playbook:

Ansible-playbook是日常应用中使用频率最高的命令,类似于liunx系统中的sh或source命令,工作机制是通过读取编写好的playbook文件实现集中处理任务。ansible-playbook命令后跟yml格式的playbook文件,playbook文件存放了要执行的任务代码。

ansible-console:

ansible-console是ansible为用户提供的一款交互式工具,类似windows中的cmd以及Linux中的shell,用户在ansible-console虚拟出来的终端上做像shell一样使用ansible内置的各种命令。

 

 (密码默认为ansible,[f:5]表示并发的线程为5个;cd crushlinux进入crushlinux组,list为显示组内内容)

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!