zoukankan      html  css  js  c++  java
  • ansible 常用命令 模块

    ansible

    ansible 是生产环境中使用非常频繁的命令之一,主要在以下场景使用:

    非固化需求;
    临时一次性操作;
    二次开发接口调用;

    非固化需求是指临时性的维护,如查看web服务器组磁盘使用情况、复制一个文件到其他机器等。
    类似这些没有规律的、临时需要做的任务,我们成为非固化需求,临时一次性操作,语法如下:

    Ansible  <host-pattern> [options]
    • -v(—verbose):输出详细的执行过程信息,可以得到执行过程所有信息;
    • -i PATH(—inventory=PATH):指定inventory信息,默认为/etc/ansible/hosts;
    • -f NUM(—forks=NUM):并发线程数,默认为5个线程;
    • —private-key=PRIVATE_KEY_FILE:指定密钥文件;
    • -m NAME,—module-name=NAME:指定执行使用的模块;
    • -M DIRECTORY(—module-path=DIRECTORY) :指定模块存放路径,默认为/usr/share/ansible;
    • -a ARGUMENTS(—args=ARGUMENTS):指定模块参数;
    • -u USERNAME(—user=USERNAME):指定远程主机以USERNAME运行命令;
    • -l subset(—limit=SUBSET):限制运行主机;

    ①检查所有主机是否存活,执行命令如下:

    [root@centos01 ~]# ansible all -f 5 -m ping
    <!--调用ping模块,all表示/etc/ansible/hosts文件中的所有主机,不用创建all分组(默认存在)-->
    192.168.100.20 | SUCCESS => { <!--表示执行成功-->
    "changed": false, <!--没有对主机做出更改-->
    "ping": "pong" <!--表示执行ping命令的返回结果-->
    }
    192.168.100.30 | SUCCESS => {
    "changed": false,
    "ping": "pong"
    }


    ②列出web组所有的主机列表,执行命令如下:
    [root@centos01 ~]# ansible web --list      <!-- --list:表示列出主机列表信息-->
    hosts (2):
    192.168.100.20
    192.168.100.30
    ③批量显示web组中的磁盘使用空间,执行命令如下:
    [root@centos01 ~]# ansible web -m command -a "df -hT"
    192.168.100.30 | SUCCESS | rc=0 >>
    文件系统 类型 容量 已用 可用 已用% 挂载点
    /dev/mapper/cl-root xfs 17G 4.4G 13G 26% /
    devtmpfs devtmpfs 897M 0 897M 0% /dev
    tmpfs tmpfs 912M 84K 912M 1% /dev/shm
    tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup
    /dev/sda1 xfs 1014M 173M 842M 18% /boot
    tmpfs tmpfs 183M 16K 183M 1% /run/user/42
    tmpfs tmpfs 183M 0 183M 0% /run/user/0

    192.168.100.20 | SUCCESS | rc=0 >>
    文件系统 类型 容量 已用 可用 已用% 挂载点
    /dev/mapper/cl-root xfs 17G 4.3G 13G 26% /
    devtmpfs devtmpfs 897M 0 897M 0% /dev
    tmpfs tmpfs 912M 84K 912M 1% /dev/shm
    tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup
    /dev/sda1 xfs 1014M 173M 842M 18% /boot
    tmpfs tmpfs 183M 16K 183M 1% /run/user/42
    tmpfs tmpfs 183M 0 183M 0% /run/user/0
    /dev/sr0 iso9660 4.1G 4.1G 0 100% /mnt

    web关键字需要提前在/etc/ansible/hosts文件中定义组。
    Ansible的返回结果非常友好,一般会用三种颜色来表示执行结果:
    • 红色:表示执行过程出现异常;
    • 橘黄颜色:表示命令执行后目标有状态变化;
    • 绿色:表示执行成功且没有目标机器做修改;
    
    

    Ansible模块

    6)service模块
    service模块为用来管理远程主机上的服务的模块。常见的参数如下:
    name:被管理的服务名称;
    state=started|stopped|restarted:动作包含启动,关闭或重启;
    enable=yes|no:表示是否设置该服务开机自启动;
    runlevel:如果设定了enabled开机自启动,则要定义在哪些运行目标下自动启动;
    示例如下:
    [root@centos01 ~]# ansible web -m service -a "name=httpd enabled=yes state=restarted"
    <!--设置httpd服务重新启动和开机自动启动-->
    2)shell模块
    shell模块在远程主机执行命令,相当于调用远程主机的Shell进程,
    然后在该Shell下打开一个子Shell运行命令。
    和command模块的区别是它支持Shell特性:如管道、重定向等。 示例如下: [root@centos01
    ~]# ansible web -m shell -a "echo hello world " <!--输出到屏幕--> 192.168.100.20 | SUCCESS | rc=0 >> hello world 192.168.100.30 | SUCCESS | rc=0 >> hello world [root@centos01 ~]# ansible web -m shell -a "echo hello world > /1.txt" <!--输出到1.txt文件中--> 192.168.100.20 | SUCCESS | rc=0 >> 192.168.100.30 | SUCCESS | rc=0 >>
    3)copy模块
    copy模块用于复制指定主机文件到远程主机的指定位置。常见的参数如下:
    dest:指出复制文件的目标目录位置,使用绝对路径。如果源是目录,则目标也要是目录,如果目标文件已存在,会覆盖原有内容;
    src:指出源文件的路径,可以使用相对路径和绝对路径,支持直接指定目录。如果源是目录,则目标也要是目录;
    mode:指出复制时,目标文件的权限,可选;
    owner:指出复制时,目标文件的属主,可选;
    group:指出复制时目标文件的属组,可选;
    content:指出复制到目标主机上的内容,不能和src一起使用,相当于复制content指明的数据到目标文件中;
    示例如下:
    [root@centos01 ~]# ansible web -m copy -a "src=/etc/hosts
    dest=/root/a1.hosts mode=777 owner=root group=root"
    <!--/将本机的hosts文件复制到web组中的所有主机上存放在家目录下的a1.hosts目录, 权限是777,属主是root,属组是root-->
    4)hostname模块
    hostname模块用于管理远程主机上的主机名。常用的参数如下:
    name:
    指明主机名;
    示例如下:
    [root@centos01 ~]# ansible 192.168.100.20 -m hostname -a "name=test"
    <!--将192.168.100.20的主机名改为test,
    但是192.168.100.20需要敲一下bash才生效-->
    5)yum模块
    yum模块基于yum机制,对远程主机管理程序包。常用的参数如下:
    name:程序包名称,可以带上版本号。若不指明版本,则默认为最新版本;
    state=present|latest|absent:指明对程序包执行的操作:
    present表明安装程序包,latest表示安装最新版本的程序包,absent表示卸载程序包; disablerepo:在用yum安装时,临时禁用某个仓库的ID; enablerepo:在用yum安装时,临时启用某个仓库的ID; conf_file:yum运行时的配置文件,而不是使用默认的配置文件; disable_gpg_check
    =yes|no:是否启用完整性校验功能; 示例如下: [root@centos01 ~]# ansible web -m shell -a "/usr/bin/rm -rf /etc/yum.repos.d/CentOS-*" <!--批量化删除web组主机的yum源--> [root@centos01 ~]# ansible web -m shell -a "/usr/bin/mount /dev/cdrom /mnt" <!--批量化挂载光盘--> [WARNING]: Consider using mount module rather than running mount 192.168.100.20 | SUCCESS | rc=0 >> mount: /dev/sr0 写保护,将以只读方式挂载 192.168.100.30 | SUCCESS | rc=0 >> mount: /dev/sr0 写保护,将以只读方式挂载 [root@centos01 ~]# ansible web -m yum -a "name=httpd state=present" <!--批量化安装httpd程序--> [root@centos01 ~]# ansible web -m shell -a "rpm -qa | grep httpd" <!--批量化查看安装的httpd程序包--> [WARNING]: Consider using yum, dnf or zypper module rather than running rpm 192.168.100.20 | SUCCESS | rc=0 >> httpd-2.4.6-67.el7.centos.x86_64 httpd-tools-2.4.6-67.el7.centos.x86_64 192.168.100.30 | SUCCESS | rc=0 >> httpd-2.4.6-67.el7.centos.x86_64 httpd-tools-2.4.6-67.el7.centos.x86_64 [root@centos01 ~]# ansible web -m shell -a "systemctl start httpd" <!--批量启动服务--> [root@centos01 ~]# ansible web -m shell -a "netstat -anptu | grep httpd"
    <!--批量化监听httpd服务是否启动成功--> 192.168.100.20 | SUCCESS | rc=0 >> tcp6 0 0 :::80 :::* LISTEN 2072/httpd 192.168.100.30 | SUCCESS | rc=0 >> tcp6 0 0 :::80 :::* LISTEN 3098/httpd 管理端只是发送yum指令到被管理端,被管理端要存在可用的yum仓库才可以成功安装。
    1)command模块
    command模块在远程主机执行命令,不支持管道、重定向等shell的特性。常用的参数如下:
    chdir:在远程主机上运行命令前要提前进入的目录;
    creates:在命令运行时创建一个文件,如果文件已存在,则不会执行创建任务;
    removes:在命令运行时移除一个文件,如果文件不存在,则不会执行移除任务;
    executeable:指明运行命令的shell程序;
    在所有主机上运行“ls ./”命令,运行前切换到/home目录下。操作如下:
    
    [root@centos01 ~]# ansible web -m command -a "chdir=/ ls ./"
    7)user模块
    user模块主要用于管理远程主机上的用户账号。常见的参数如下:
    name:必选参数,账号名称;
    state=present|absent:创建账号或者删除账号,present表示创建,absent表示删除;
    system=yes|no:是否为系统账户;
    uid:用户UID;
    group:用户的基本组
    groups:用户的附加组;
    shell:默认使用的shell;
    home:用户的家目录;
    mve_home=yes|no:
    如果设置的家目录已经存在,是否将已存在的家目录进行移动;
    pssword:用户的密码,建议使用加密后的字符串;
    comment:
    用户的注释信息;
    remore=yes|no:
    当state=absent时,是否要删除用户的家目录;
    创建用户示例如下:
    [root@centos01 ~]# ansible web -m user -a "name=user01
    system=yes uid=502 group=root groups=root shell=/etc/nologin
    home=/home/user01 password=pwd@123"
    <!--在web组的所有主机上新建一个系统用户,UID为502, 属组是root,名字是user01,密码是pwd@123--
    
    

    2)Ansible-doc

    Ansible-doc用来查询ansible模块文档的说明,类似于man命令,针对每个模块都有详细的用法说明及应用案例介绍,语法如下:
    ansible-doc [options] [module……]
    列出支持的模块:
    [root@centos01 ~]#ansible-doc -l
    查询ping模块的说明信息:
    [root@centos01 ~]# ansible-doc ping

    3)Ansible-playbook

    Ansible-playbook是日常应用中使用频率最高的命令,类似于Linux中的sh或source命令
    ,用来执行系列任务。其工作机制:通过读取预先编写好的playbook文件实现集中处理任务。
    Ansible-playbook命令后跟yml格式的playbook文件,playbook文件存放了要执行的任务代码,命令使用方式如下:
    Ansible-playbook playbook.yml
    <!--playbook.yml文件要提前编写好,建议使用绝对路径-->
    
    

    4)Ansible-console

    Ansible-console是Ansible为用户提供的一款交互式工具,
    类似于Windows的cmd或者是Linux中shell。
    用户可以在ansible-console虚拟出来的终端上像shell一样使用Ansible内置的各种命令,
    这为习惯于使用shell交互式方式的用户提供了良好的使用体验。在终端输入ansible-console命令后,显示如下:
    [root@centos01 ~]# ansible-console
    Welcome to the ansible console.
    Type help or ? to list commands.
    <!--输入help或?获取帮助-->
    root@all (2)[f:5]$ cd web <!--使用cd命令切换主机或分组-->
    root@web (2)[f:5]$ list <!--列出当前的设备-->
    192.168.100.20
    192.168.100.30
    <!--支持Tab键补全,快捷键Ctrl+D或Ctrl+C即可退出当前的虚拟终端-->




  • 相关阅读:
    二叉树的存储结构 数据结构和算法45
    二叉树的遍历 数据结构和算法46
    二叉树的存储结构 数据结构和算法45
    二叉树的遍历 数据结构和算法46
    二叉树2 数据结构和算法44
    二叉树 数据结构和算法43
    树的存储结构2 数据结构和算法42
    ASP.NET 常用的一些DOS命令
    Linq to DataSet
    上传图片生成略缩图“最佳解决”
  • 原文地址:https://www.cnblogs.com/centos2017/p/12759624.html
Copyright © 2011-2022 走看看