美文网首页
Ansible运维自动化

Ansible运维自动化

作者: 大喵哥哥666 | 来源:发表于2019-08-12 22:49 被阅读0次

    Ansible 特点

    1. 部署简单,只需在主控端部署 Ansible 环境,被控端无需做任何操作。
    2. 使用 SSH(Secure Shell)协议对设备进行管理。
    3. 主从集中化管理。
    4. 配置简单、功能强大、扩展性强。
    5. 支持 API 及自定义模块,可通过 Python 轻松扩展。
    6. 通过 Playbooks 来定制强大的配置、状态管理。
    7. 对云计算平台、大数据都有很好的支持。
    8. 提供一个功能强大、操作性强的 Web 管理界面和 REST API 接口 ---- AWX 平台。

    安装

    yum -y install ansible

    配置 Ansible

    cd /etc/ansible
    ansible.cfg 是 Ansible 工具的配置文件;
    hosts 用来配置被管理的机器;
    roles 是一个目录,playbook 将使用它

    1. Ansible 管理机与被管理机做秘钥认证
    ssh-keygen -t rsa    #生成秘钥
    ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 22 root@192.168.12.129"     # 将公钥写入被管理机
    
    1. hosts 文件添加被管理机
      vim /etc/ansible/hosts
    [Client]
    192.168.12.129
    

    测试 Ansible

    ansible Client -m ping
    操作 Client 组 ( all 为操作 hosts 文件中所有主机 ),-m 指定执行 ping 模块,下面是返回结果

    # -i          指定 hosts 文件位置
    # -u username 指定 SSH 连接的用户名
    # -k          指定远程用户密码
    # -f          指定并发数
    # -s          如需要 root 权限执行时使用 ( 连接用户不是 root 时 )
    # -K          -s 时,-K 输入 root 密码
    

    附加

    1. Ansible 定义主机、组规则的配置文件
      vim /etc/ansible/hosts
    www.abc.com     # 定义域名
    192.168.1.100   # 定义 IP
    192.168.1.150:37268   # 指定端口号
    
    [WebServer]           # 定义分组
    192.168.1.10
    192.168.1.20
    192.168.1.30
    
    [DBServer]            # 定义多个分组
    192.168.1.50
    192.168.1.60
    
    Monitor ansible_ssh_port=12378 ansible_ssh_host=192.168.1.200   # 定义别名
    
    • ansible_ssh_host 连接目标主机的地址
    • ansible_ssh_port 连接目标主机的端口,默认 22 时无需指定
    • ansible_ssh_user 连接目标主机默认用户
    • ansible_ssh_pass 连接目标主机默认用户密码
    • ansible_ssh_connection 目标主机连接类型,可以是 local 、ssh 或 paramiko
    • ansible_ssh_private_key_file 连接目标主机的 ssh 私钥
    • ansible_*_interpreter 指定采用非 Python 的其他脚本语言,如 Ruby 、Perl 或其他类似 ansible_python_interpreter 解释器
    [webservers]         # 主机名支持正则描述
    www[01:50].example.com
    
    [dbservers]
    db-[a:f].example.com
    
    1. Ansible 常用模块学习
    ansible-doc -l    # 列出 Ansible 支持的模块
    ansible-doc ping  # 查看该模块帮助信息
    

    远程命令模块( command / script / shell )

    ansible Client -m command -a "free -m"               # 查看 Client 分组主机内存使用情况
    ansible Client -m script -a "/home/test.sh 12 34"    # 远程执行本地脚本
    ansible Client -m shell -a "/home/test.sh"           # 执行远程脚本
    ansible Client -m copy -a "src=/home/test.sh desc=/tmp/ owner=root group=root mode=0755"   # 向 Client 组中主机拷贝 test.sh 到 /tmp 下,属主、组为 root ,权限为 0755
    ansible Client -m stat -a "path=/etc/syctl.conf"     #获取远程文件状态信息,atime/ctime/mtime/md5/uid/gid 等信息
    ansible Client -m get_url -a "url=http://www.baidu.com dest=/tmp/index.html mode=0440 force=yes"  #实现在远程主机下载指定 URL 到本地,支持 sha256sum 文件校验
    ansible Client -m yum -a "name=curl state=latest"    #软件包管理
    ansible Client -m cron -a "name='check dirs' hour='5,2' job='ls -alh > /dev/null'"   #远程主机 crontab 配置
    ansible Client -m mount -a "name=/mnt/data src=/dev/sd0 fstype=ext4 opts=ro state=present"   #远程主机分区挂载
    ansible Client -m service -a "name=nginx state=stoped"     #远程主机系统服务管理
    ansible Client -m user -a "name=wang comment='user wang'"  #远程主机用户管理
    

    相关文章

      网友评论

          本文标题:Ansible运维自动化

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