day-37 综合架构批量管理 ansible⑧(自动化软件)

00.课程介绍部分
    1.远程管理配置文件参数
    2.批量管理防范入侵方法
    3.批量管理服务概念作用
    4.批量管理服务安装部署
    4.批量管理服务配置应用
            a 主机清单配置部分
            b 掌握模块功能应用
            c 掌握剧本功能配置
01.回顾总结
    1.杀进程有三种方法
    2.远程连接有两种方法
    3.ssh密码信息连接原理
    4.ssh远程秘钥连接原理
    5.实现秘钥连接
    6.想要实现批量分发公钥
    第一步:实现免交互创建秘钥
        ssh-keygen -t dsa -f /root/.ssh/id_dsa -P ""
    第二步:实现免交互发送公钥
        1.不用yes
        ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.7 -o StrictHostKeyChecking=no
        2.不用密码
        下载sshpass
         sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.7 -o StrictHostKeyChecking=no
昨日作业解答:
    1.如何利用xshell软件实现基于秘钥方式连接虚拟主机
        vim /etc/ssh/sshd_config
        47 AuthorizedKeysFile      .ssh/authorized_keys
        创建一个/root/.ssh/authorizer_keys后将创建的公钥复制粘贴放入文件中

    2.批量分发秘钥时,每台主机密码不一样, 每台主机远程服务端口不一样
        第一步:创建一个用户主机IP 端口 密码文件 
        cat >> /server/scripts/host_txt <
02.远程管理服务配置文件
    /etc/ssh/sshd_config           ---ssh服务端配置文件
    /etc/ssh/ssh_config            ---ssh客户端配置文件

    #Port 22                       ---指定服务端号
    #ListenAddress 0.0.0.0         ---任意主机地址都进行监听
     ps:所有服务监听的地址只能是本地网卡上有的地址
    #PermitRootLogin yes           ---是否允许root用户远程登录
    #PubkeyAuthentication yes      ---是否允许公钥连接
    #PermitEmptyPasswords no       ---是否允许无密码连接
    GSSAPIAuthentication yes       ---使用GSSAPI认证方式进行远程连接 影响ssh远程连接效率
    #UseDNS yes                    ---是否进行DNS反向解析过程 影响ssh远程连接效率
03.远程管理防范入侵
    1.尽量使用秘钥认证 不要使用密码认证(密码复杂 定期修改)
    2.尽量让架构中的服务器没有外网网卡
    3.对于拥有外网的服务器,做好服务地址监听,提高安全性
    4.防火墙服务或硬件,根据业务情况,做安全访问控制  硬件:ACL访问控制
    5.监控系统重要文件是否被修改   inotify  对比指纹信息(zabbix)
        /etc/目录 
        /var/目录 
    6.给重要文件信息上锁  chattr
      用户相关文件上锁: passwd  shadow groupshadow
      服务程序运行相关: rc.local profile.d/ crond 
      系统环境配置相关: profile bashrc ifcfg_eth0 reslove.conf rsyncd.cof
04.批量管理服务概念介绍 ansible saltstack
   同时并行管理多台主机
    a 实现批量分发数据信息
    b 实现批量部署软件服务
    c 实现批量收集系统信息  资产管理
    d 实现批量自动管理应用  代码上线 服务重启 等

ansible软件特点
    a 部署安装简单方便
    b 软件不需要启动服务
    c 客户端不需要进行配置
    d 功能作用非常强大
05.ansible软件部署过程
    管理端:
    第一步:安装软件
        yum install -y ansible
        路径:/etc/ansible
        ansible.cfg      ---ansible程序配置文件 默认配置即可
        hosts            ---主机清单文件
        roles

    被管理端:
    确认防火墙和selinux安全服务是否关闭
06.如何配置使用软件
ansible 管理谁 -m 模块信息 具体使用模块的什么参数信息

    1.主机清单配置
    vim /etc/ansible/hosts
    172.16.1.41             ---ansible管理端可以管理的主机信息

    主机清单配置方法:
    官方参考: https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html
方法一:直接在hosts写上主机IP地址信息
    172.16.1.7
    172.16.1.31
    172.16.1.41

    进行测试:
    ansible 172.16.1.7,172.16.1.31 -m ping    ---单台或多台主机测试
    ansible all -m ping                       ---对所有管理主机测试

方法二:安装分组信息进行配置
    [rsync_server]
    172.16.1.41

    [rsync_client]
    172.16.1.31
    172.16.1.7

    进行测试
    ansible rsync_server -m ping             ---对一个分组进行测试

方法三:设置管理主机连接参数(ansible程序内置变量)信息
    172.16.1.41  ansible_user=root ansible_password=123456 ansible_port=22
    ---测试ip地址
    backup  ansible_host=172.16.1.41 ansible_user=root ansible_password=654321 ansible_port=22
    ---测试主机名
    www.oldboy.com ansible_user=root ansible_password=654321 ansible_port=22
    ---测试域名

    ansible_user      --- 指定远程连接用户信息
    ansible_password  --- 指定远程连接用户密码
    ansible_port      --- 指定远程连接服务端口
    ansible_host      --- 可以使用主机名称进行管理  参数后面指定IP地址  参数前面指定主机名信息


方法四:嵌入式配置主机清单
    [rsync:children]
    rsync_sersver
    rsync_client

    [rsync_server]
    172.16.1.41

    [rsync_clinet]
    172.16.1.31
    172.16.1.7

    进行测试:
    ansible rsync -m ping   ---测试rsync下的组

    [rsync_clinet:vars]     ---对管理中所有主机信息,统一设置变量
    ansible_user=root
    ansible_password=654321
    ansible_port=22

方法五:使用匹配符号信息,匹配多个主机
    [rsync_client]
    172.16.1.[1:7]

    [rsync_clinet]
    web-[a:z]


遇到的问题:
        问题一:
        172.16.1.41 | UNREACHABLE! => {
            "changed": false, 
            "msg": "Failed to connect to the host via ssh: ssh: connect to host 172.16.1.41 port 22: Connection refused", 
            "unreachable": true
        }
        排错方法:
        01. 利用ssh命令远程连接测试
        
        问题二:
        172.16.1.41 | UNREACHABLE! => {
            "changed": false, 
            "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).", 
            "unreachable": true
        }
        排错:
        01. 分发公钥信息
        
        问题三:
        [root@m01 ansible]# ansible 172.16.1.31 -m ping
        [WARNING]: Could not match supplied host pattern, ignoring: 172.16.1.31

        [WARNING]: No hosts matched, nothing to do
        排错:
        01. 修改主机清单信息
        只有主机清单中定义主机信息,可以被ansible管理



2.掌握功能模块
        第一个模块:command 命令模块 批量执行命令 默认模块
        ansible all -m command -a "hostname"

        第二个模块:shell   命令模块  批量执行命令 万能模块
        ansible all -m shell -a "yum install -y htop"
        ansible all -m shell -a "cd /tmp;pwd"         ---command执行不了可以用shell

        shell模块想批量运行脚本
        第一步:编写脚本
        第二步:将脚本文件进行分发
        ansible all -m copy -a "src=分发的文件 dest=保存路径"
        第三步:修改脚本权限
        ansible all -m file -a "path=脚本路径 "

        第三个模块:script  命令模块  批量运行脚本
        第一步:编写脚本
        第二步:批量执行脚本
        ansible all -m script -a "脚本路径"
========================================================================================================
    补充:如何学习模块使用方法:
    01.简单了解模块作用
        command – Execute commands on targets
    02.模块详细说明
    03.掌握模块参数用法
       根据样例学习参数用法
    补充:学习ansible会有不同颜色提示
    01.绿色:对主机信息进行查看,操作执行成功
    02.黄色:对主机信息进行查看,对主机中信息有调整修改,成功
    03.紫色:错误提示信息,建议忠告信息
    04.红色:报错提示信息
========================================================================================================
04.课程知识总结:
    1.ssh配置文件
        服务端:/etc/ssh/sshd_config
        客户端:/etc/ssh/sshd_config
    2.ssh远程管理防范入侵      共6点
    3.ansible部署方法
        yum install -y ansible
    4.ansible的使用方法                 ansible 主机清单 -m 模块 
        a 主机清单
            /etc/ansible/hosts
        1.直接在hosts中写ip地址
        2.分组
        3.内置变量
        4.嵌入式 [xxx:chirldren]   批量添加内置变量 [组名:var]
        5.使用匹配符号 172.16.1.[1:7]
        
        b 模块信息
        1.command模块
            ansible 172.16.1.31 -m command -a "hostname"
        2.shell
            ansible 172.16.1.31 -m shell -a "cp /etc/hosts /tmp"
        3.script
            ansible 172.16.1.31 -m script -a "脚本信息"
作业:
01. ansible利用域名管理主机时, 每次都需要有yes/no确认, 如何实现免交互 

02. 以下四个内置变量有什么用
ansible_become
ansible_become_method
ansible_become_user
ansible_become_password

03. 自学两个模块使用方法
expect – Executes a command and responds to prompts
telnet – Executes a low-down and dirty telnet command   

你可能感兴趣的:(day-37 综合架构批量管理 ansible⑧(自动化软件))