• Ansible自动化运维工具(二)


    目录

    (6)copy模块

    (7)file模块

    ​编辑​编辑(8)hostname模块

    (9)ping模块 

    (10)yum 模块 

    (11)service/system模块

    ​编辑

    ​编辑

    (12)script模块

    ​编辑

    (13)setup模块

    (1)inventory 中的变量含义


    (6)copy模块

    用于复制指定主机文件到远程主机的

    ansible-doc -s copy
    

    常用的参数:

    参数注释
    dest指出复制文件的目标及位置,使用绝对路径,如果是源目录,指目标也要是目录,如果目标文件已经存在会覆盖原有的内
    src指出源文件的路径,可以使用相对路径或绝对路径,支持直接指定目录,如果源是目录则目标也要是目录
    mode指出复制时,目标文件的权限
    owner指出复制时,月标文件的属主
    group指出复制时,目标文件的属组
    content指出复制到目标主机上的内容,不能与src一起使用
    1. #将etc/fstab下的复制到opt/fstab.bak给予root属主、权限640
    2. ansible dbservers -m copy -a 'src=/etc/fstab dest=/opt/fstab.bak owner=root mode=640'

    1. #详细查看opt下的文件
    2. ansible dbservers -a 'ls -l /opt'

     

    1. #查看新创建的文件内容
    2. ansible dbservers -a 'cat /opt/fstab.bak'

    1. #将helloworld写入/opt/hello.txt文件中
    2. ansible dbservers -m copy -a 'content="helloworld" de
    3. st=/opt/hello.txt'

    1. #查看写入的文件
    2. ansible dbservers -a 'cat /opt/hello.txt'

    (7)file模块

    设置文件属性

    1. #查看file模块下的功能,按q退出
    2. ansible-doc -s file

    举例:

    1. #修改文件的属主属组权限等
    2. ansible dbservers -m file -a 'owner=test01 group=mysql mode=644 path=/opt/fstab.bak'
    3. #查看修改后的信息
    4. ansible dbservers -m command -a 'chdir=/opt ls -lh ./'

    1. #设置/opt/fstab.link为/opt/fstab.bak的链接文件
    2. ansible dbservers -m file -a 'path=/opt/fstab.link src=/opt/fstab.bak state=link'
    3. #查看修改后的信息
    4. ansible dbservers -m command -a 'chdir=/opt ls -lh ./'

    1. #创建一个文件
    2. ansible dbservers -m file -a "path=/opt/abc.txt state=touch"
    3. #查看修改后的信息
    4. ansible dbservers -m command -a 'chdir=/opt ls -lh ./'

    1. #删除一个文件
    2. ansible dbservers -m file -a "path=/opt/abc.txt state=absent"
    3. #查看删除后的信息
    4. ansible dbservers -m command -a 'chdir=/opt ls -lh ./'

    (8)hostname模块

    用于管理远程主机上的主机名

    ansible dbservers -m hostname -a "name=mysql01"
    

    (9)ping模块 

    检测远程主机的连通性

    1. ansible all -m ping
    2. ansible webservers -m ping
    3. ansible 192.168.158.25 -m ping

     

    (10)yum 模块 

    在远程主机上安装与卸载软件

    ansible-doc -s yum
    
    参数注释
    name指定要安装卸载的软件
    state=present/absent默认persent添加absent卸载

    举例:

    1. #安装hyyps服务
    2. ansible dbservers -m yum -a "name=httpd"

    1. #查看安装服务的状态
    2. nsible dbservers -m command -a 'service httpd status'

    1. #卸载httpd服务
    2. ansible dbservers -m yum -a "name=httpd state=absent"

    (11)service/system模块

    管理远程被控制主机上的管理服务的运行状态

    常用参数:

    参数注释
    name=“名称”管理的服务名称
    enable=true/false设置服务开机自启或关闭
    state=start/stop/restart设置服务的状态为开始/关闭/重启
    enable=yes/no设置是否开机自启
    runlevel若设置开机自启则要设置在那些系统等级使用

    举例:

    1. #下载httpd服务
    2. ansible dbservers -m yum -a "name=httpd"
    3. #设置开机自启,服务的状态为开启
    4. ansible dbservers -m service -a 'enabled=yes name=httpd state=started'

    (12)script模块

    实现远程批量运行本地的shell脚本

    1. #查看模块下的功能
    2. ansible-doc -s script
    1. ansible服务器:
    2. vim /test.sh
    3. #编写/下的test.sh脚本内容如下
    4. #!/bin/bash
    5. echo "this is test"
    1. chmod +x /test.sh
    2. ansible webservers -m script -a "/test.sh"

    (13)setup模块

    setup 模块可以获取这些信息 facts 组件收集d 被管理节点信息

    参数:filter 过滤可配合正则表达式。

    ansible webservers -m setup -a 'filter=*ipv4'
    

    3.hostsinverntory主机清单

    hosts配置文件位置:/etc/ansible/hosts;

    Inventory支持对主机进行分组,每个组内可以定义多个主机,每个主机都可以定义在任何一个或多个主机组内

    (1)inventory 中的变量含义

    变量含义
    ansible_hostansible连接节点时的IP地址
    ansible_port连接对方的端口号,ssh连接时默认为22
    ansible_user连接对方主机时使用的主机名。不指定时,将使用执行ansible或ansible-playbook命令的用户
    ansible_password连接时的用户的ssh密码,仅在未使用密钥对验证的情况下有效
    ansible_ssh_ private_key_file指定密钥认证ssh连接时的私钥文件
    ansible_ssh_common_args提供给ssh、sftp、 scp命令的额外参数
    ansible become允许进行权限提升
    ansible become_ method指定提升权限的方式,例如可使用sudo/ su/runas等方式
    ansible become_user提升为哪个用户的权限,默认提升为root
    ansible_become_password提升为指定用户权限时的密码
    1. #ansible主机配置
    2. #如果是名称类似的主机,可以使用列表的方式标识各个主机。
    3. vim /etc/ansible/hosts
    4. [webservers]
    5. 192.168.198.12:22 #冒号后定义远程连接端口,默认是 ssh 的 22 端口
    6. 192.168.146.1[2:3]
    1. [dbservers]
    2. db-[a:f].example.org #支持匹配 a~f
    1. 1)主机变量
    2. [webservers]
    3. 192.168.198.13 ansible_port=22 ansible_user=root ansible_password=000000
    4. ansible webservers -a 'ls -lh /home'

    1. 2)组变量
    2. [webservers]
    3. 192.168.198.13
    4. #表示为 webservers 组内所有主机定义变量
    5. [webservers:vars]
    6. ansible_user=root
    7. ansible_password=000000
    8. [all:vars] #表示为所有组内的所有主机定义变量
    9. ansible_port=22

    ansible webservers -a 'ls -lh /home'
    

    1. 3)组嵌套
    2. [nginx]
    3. 192.168.198.12
    4. 192.168.198.13
    5. 192.168.198.14
    6. [apache]
    7. 192.168.198.3[0:3]
    8. #表示为 webs 主机组中包含了 nginx 组和 apache 组内的所有主机
    9. [webs:children]
    10. nginx
    11. apache

  • 相关阅读:
    【Dubbo3高级特性】「框架与服务」服务端通过线程池隔离技术实现资源限制和资源隔离机制
    微信小程序源码【195套】【源码导入视频教程+源码导入文档教程+详细图文文档教程】
    MacOS下brew切换为国内源
    exists 子查询中 having 包含外表的列计算结果出错问题现象
    netty 底层的工作原理
    【自学笔记】如何在 Python 中使用 YAML 文件? 了解 YAML 格式和规范
    【JavaEE】_HTTP响应
    Java 包及访问控制权限 要点
    软考 系统架构设计师系列知识点之基于架构的软件开发方法ABSD(1)
    SNARK性能及安全——Prover篇
  • 原文地址:https://blog.csdn.net/m0_71493671/article/details/132567508