美文网首页
D-37综合架构批量管理 ansible(自动化软件)

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

作者: 荆俊玮 | 来源:发表于2019-08-24 19:31 被阅读0次

    一、 远程管理服务配置文件

    /etc/ssh/sshd_config --- ssh服务端配置文件
    /etc/ssh/ssh_config --- ssh客户端配置文件
    cat /etc/ssh/sshd_config
    内部重要信息
    Port 22 --- 指定服务端口号 52113
    ListenAddress 0.0.0.0 --- 任意主机地址都进行监听
    PS: 所有服务监听的地址只能是本地网卡上有的地址


    image.png

    PermitRootLogin yes --- 是否允许root用户远程登录,当参数修改为no时,则代表root用户不可以远程连接到服务器中,此时需先以普通用户的身份进入到服务器中再进行su的切换
    PubkeyAuthentication yes --- 是否允许使用公钥的方式进行连接,且下方显示为存储公钥信息的相关文件
    PermitEmptyPasswords no --- 是否允许无密码进行远程连接
    GSSAPIAuthentication yes --- 使用GSSAPI认证方式进行远程连接;建议设置成no,yes会影响ssh远程连接效率
    UseDNS yes --- 是否进行DNS反向解析过程;前提是必须再host文件中配置dns解析关系,才可以进行相应的IP地址戒心,建议配置为no,yes影响ssh远程连接效率

    二、远程管理防范入侵

    1. 尽量使用秘钥认证 不要使用密码认证
      如使用密码认证需(密码复杂 定期修改)
    2. 尽量让架构中的服务器没有外网网卡
    3. 对于拥有外网地址服务器,做好服务地址监听,提高安全性
    4. 防火墙服务/硬件, 根据业务情况,做安全访问控制 ;软件ACL访问控制 、ASA
    5. 监控系统重要文件是否被修改;使用notify监控,对比指纹信息(zabbix)==>/etc/、/var/
    6. 给重要文件信息上锁 chattr
      用户相关文件上锁: passwd shadow group groupshadow
      服务程序运行相关: rc.local profile.d/ crond
      系统环境配置相关: profile bashrc ifcfg-eth0 reslove.conf rsyncd.conf

    三、批量管理服务概念介绍 ansible saltstack

    同时并行管理多台主机

    a 实现批量分发数据信息
    b 实现批量部署软件服务
    c 实现批量收集系统信息 ==>资产管理
    d 实现批量自动管理应用 ==>代码上线、服务重启
    使用脚本批量管理是串行管理,需一台一台服务器执行,效率低

    ansible软件特点

    a 部署安装简单方便
    b 软件不需要启动服务
    c 客户端不需要进行配置
    d 功能作用非常强大

    四、ansible软件部署过程:

    管理端:

    仅此一步:安装软件
    yum install -y ansible
    ansible内部数据信息
    ansible.cfg --- ansible程序配置文件 默认配置即可
    hosts --- 主机清单文件
    roles --- 角色文件(一般为空文件)

    被管理端:

    确认防火请和selinux安全服务是否关闭

    五、 如何配置使用软件

    主机清单配置

    vim /etc/ansible/hosts
    172.16.1.41 --- ansible管理端可以管理的主机信息
    主机清单配置方法:
    官方参考: https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html
    方法一: 直接写上管理主机IP地址信息
    172.16.1.41
    172.16.1.31
    172.16.1.7
    进行测试:
    ansible 172.16.1.31,172.16.1.41 -m ping --- 单台或多台主机测试
    ansible all -m ping --- 对所有管理主机测试

    方法二: 按照分组信息进行配置 *****
    [rsync_server]
    172.16.1.41
    [rsync_client]
    172.16.1.31
    172.16.1.7
    进行测试:
    ansible rsync_client -m ping

    方法三: 设置管理主机连接参数(ansible程序内置变量)信息
    [rsync_server]
    172.16.1.41 ansible_user=root ansible_password=654321 ansible_port=22
    [rsync_server]
    backup ansible_host=172.16.1.41 ansible_user=root ansible_password=654321 ansible_port=22
    [rsync_server]
    www.oldboy.com ansible_user=root ansible_password=654321 ansible_port=22(使用域名的方式进行远程管理,但必须再host配置文件中进行相关解析)

    内置变量意义:
    ansible_user --- 指定远程连接用户信息
    ansible_password --- 指定远程连接用户密码
    ansible_port --- 指定远程连接服务端口
    ansible_host --- 可以使用主机名称进行管理 参数后面指定IP地址 参数前面指定主机名信息
    如:nfs ansible_host=172.16.1.31

    方法四: 嵌入式配置主机清单
    第一种
    [rsync:children]
    rsync_server
    rsync_client
    [rsync_server]
    www.oldboy.com ansible_host=172.16.1.41 ansible_user=oldboy ansible_password=654321 ansible_port=22
    [rsync_client]
    172.16.1.31
    172.16.1.7
    进行测试:
    ansible rsync -m ping

    第二种
    [rsync_client]
    172.16.1.31
    172.16.1.7
    [rsync_client:vars] --- 对管理组中所有主机信息,统一设置变量
    ansible_user=root
    ansible_password=654321
    ansible_port=22

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

    [rsync_client]
    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
    }
    排错方法:利用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
    }
    排错:分发公钥信息

    问题三:

    [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
    

    排错:修改主机清单信息
    ps:只有主机清单中定义主机信息,可以被ansible管理

    掌握功能模块

    第一个模块: command 命令模块 批量执行命令 默认模块
    ansible oldboy -m command -a "hostname"

    第二个模块: shell 命令模块 批量执行命令 万能模块
    ansible oldboy -m shell -a "yum install -y htop"
    ansible oldboy -m shell -a "cd /tmp;pwd"

    例子:批量创建用户
    第一个里程: 编写脚本
    第二个里程: 将脚本进行分发
    ansible oldboy -m copy -a "src=/server/scripts/create_user.sh dest=/server/scripts/"
    第三个里程: 修改脚本权限
    ansible oldboy -m file -a "path=/server/scripts/create_user.sh mode=755"
    第四个里程: 批量执行脚本
    ansible oldboy -m shell -a "/server/scripts/create_user.sh"

    第三个模块: script 命令模块 批量运行脚本
    第一个里程:编写脚本
    第二个里程: 批量执行脚本(不用添加任何权限)
    ansible oldboy -m script -a "/server/scripts/create_user.sh"

    补充: 如何学习模块使用方法:

    1.简单了解模块作用
    command – Execute commands on targets 在目标主机上执行命令模块
    2.模块详细说明
    3.掌握模块参数用法:根据样例学习参数信息

    PS学习ansible会有不同颜色提示

    1. 绿色: 对主机信息进行查看, 操作执行成功
    2. 黄色: 对主机信息进行查看, 对主机中信息有调整修改
    3. 紫色: 错误提示信息, 建议忠告信息
    4. 红色: 报错提示信息

    相关文章

      网友评论

          本文标题:D-37综合架构批量管理 ansible(自动化软件)

          本文链接:https://www.haomeiwen.com/subject/bcbqectx.html