zoukankan      html  css  js  c++  java
  • Ansible搭建

    实验环境:

    操作系统 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为显示组内内容)

  • 相关阅读:
    接口测试
    Appium应用
    adb常用指令与APPium环境搭建
    移动端专项测试
    tomcat修改端口号
    Linux之Redis安装
    FTL常用标签及语法
    .ftl文件介绍
    maven之clean、install命令
    tomcat环境变量详细配置步骤
  • 原文地址:https://www.cnblogs.com/XXXX001/p/11743474.html
Copyright © 2011-2022 走看看