ansible晋级操作之ad-hoc命令

所谓的ad-hoc命令!

如果我们敲入一些命令去比较快的完成一些事情,而不需要将这些执行的命令特别保存下来, 这样的命令就叫做 ad-hoc 命令。Ansible提供两种方式去完成任务,一是 ad-hoc 命令,一是写 Ansible playbook.前者可以解决一些简单的任务, 后者解决较复杂的任务.

在学习了 playbooks 之后,你才能体会到 Ansible 真正的强大之处在哪里.

在什么情境下去使用ad-hoc 命令呢?

比如说查看ip,查看服务状态等.那种少了命令即可实现的操作

测试操作

  1. [root@localhost ~]# ansible group1 -a "ls"
  2. [DEPRECATION WARNING]: DEFAULT_SUDO_USER option, In favor of Ansible Become, which is a generic framework. See
  3. become_user. , use become instead. This feature will be removed in version 2.8. Deprecation warnings can be disabled
  4. by setting deprecation_warnings=False in ansible.cfg.
  5. 10.0.15.60 | CHANGED | rc=0 >>
  6. test1.txt
  7.  
  8. 10.0.15.66 | CHANGED | rc=0 >>
  9. test2.txt
  10. -------------------------------------------------------
  11. group1是在/etc/ansible/hosts中设置的组,即操作当前组中的主机
  12. 不了解的朋友可以看看我上篇博客:传送门
  13.  
  14. #上面的警告可以通过修改配置文件进行注释
  15. 编辑ansible.cfg 修改deprecation_warnings False即可
  16.  
  17. ansible group1 -a "ls" -u username #-u username 表示指定的用户执行
  18.  
  19. ansible有许多模块,默认是 command’,也就是命令模块
  20. 我们可以通过 -m 选项来指定“不同的模块”.在前面所示的例子中, 因为我们是要在 group1 组下的服务器中执行 ls 命令,因为是执行命令,所以就不需要指定command模块。使用 默认设定就OK
  21.  
  22. 注意:command 模块不支持 shell 变量,也不支持管道等 shell 相关的东西.如果你想使用 shell相关的这些东西, 请使用’shell 模块.

shell模块使用

  1. [root@localhost ~]# ansible group1 -m shell -a 'echo $PATH'
  2. 10.0.15.66 | CHANGED | rc=0 >>
  3. /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
  4.  
  5. 10.0.15.60 | CHANGED | rc=0 >>
  6. /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/cpgroup/jdk/bin:/usr/local/cpgroup/jdk/jre/bin:/usr/local/cpgroup/ant/dist/bin:/usr/local/cpgroup/maven/bin:/usr/local/cpgroup/python/bin:/usr/local/git/bin
  7.  
  8. !!!注意使用Ansible ad-hoc 命令行接口时(与使用 Playbooks 的情况相反)。尤其注意shell 引号的规则。比如在上面的例子中,如果使用双引号”echo $PATH”,求出PATH”变量在当前系统的值,而我们想要将这个命令传递到其他机器上面
  9. [root@localhost ~]# ansible group1 -m shell -a "echo $PATH"
  10. 10.0.15.66 | CHANGED | rc=0 >>
  11. /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/go/bin:/root/bin
  12.  
  13. 10.0.15.60 | CHANGED | rc=0 >>
  14. /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/go/bin:/root/bin
  15.  
  16. [root@localhost ~]# echo $PATH
  17. /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/go/bin:/root/bin

ansible下的scp

  1. [root@localhost ~]# ansible group1 -m copy -a "src=/root/1.txt dest=/root/1.txt"
  2. 10.0.15.66 | CHANGED => {
  3. "changed": true,
  4. "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
  5. "dest": "/root/1.txt",
  6. "gid": 0,
  7. "group": "root",
  8. "md5sum": "d41d8cd98f00b204e9800998ecf8427e",
  9. "mode": "",
  10. "owner": "root",
  11. "secontext": "system_u:object_r:admin_home_t:s0",
  12. "size": 0,
  13. "src": "/root/.ansible/tmp/ansible-tmp-1550550512.6-88436779222448/source",
  14. "state": "file",
  15. "uid": 0
  16. }
  17. 10.0.15.60 | CHANGED => {
  18. "changed": true,
  19. "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
  20. "dest": "/root/1.txt",
  21. "gid": 0,
  22. "group": "root",
  23. "md5sum": "d41d8cd98f00b204e9800998ecf8427e",
  24. "mode": "",
  25. "owner": "root",
  26. "secontext": "system_u:object_r:admin_home_t:s0",
  27. "size": 0,
  28. "src": "/root/.ansible/tmp/ansible-tmp-1550550512.59-19910559807601/source",
  29. "state": "file",
  30. "uid": 0
  31. }

ansible修改文件权限

  1. [root@localhost ~]# ansible group1 -m file -a "dest=/root/1.txt mode=777"
  2. 10.0.15.60 | CHANGED => {
  3. "changed": true,
  4. "gid": 0,
  5. "group": "root",
  6. "mode": "",
  7. "owner": "root",
  8. "path": "/root/1.txt",
  9. "secontext": "system_u:object_r:admin_home_t:s0",
  10. "size": 0,
  11. "state": "file",
  12. "uid": 0
  13. }
  14. 10.0.15.66 | CHANGED => {
  15. "changed": true,
  16. "gid": 0,
  17. "group": "root",
  18. "mode": "",
  19. "owner": "root",
  20. "path": "/root/1.txt",
  21. "secontext": "system_u:object_r:admin_home_t:s0",
  22. "size": 0,
  23. "state": "file",
  24. "uid": 0
  25. }

修改文件所属用户所属组

  1. [root@localhost ~]# ansible group1 -m file -a "dest=/root/1.txt mode=644 owner=www-data group=www-data"
  2. 10.0.15.66 | CHANGED => {
  3. "changed": true,
  4. "gid": 1000,
  5. "group": "www-data",
  6. "mode": "",
  7. "owner": "www-data",
  8. "path": "/root/1.txt",
  9. "secontext": "system_u:object_r:admin_home_t:s0",
  10. "size": 0,
  11. "state": "file",
  12. "uid": 1000
  13. }
  14. 10.0.15.60 | CHANGED => {
  15. "changed": true,
  16. "gid": 1001,
  17. "group": "www-data",
  18. "mode": "",
  19. "owner": "www-data",
  20. "path": "/root/1.txt",
  21. "secontext": "system_u:object_r:admin_home_t:s0",
  22. "size": 0,
  23. "state": "file",
  24. "uid": 1001
  25. }

创建与删除

  1. ansible group -m file -a "dest=/root/test state=directory"
  2. 没有state参数默认创建文件,添加后变为创建目录
  3. state=absent 这个参数代表删除文件
  4. 在创建过程中可以在双引号中添加一些其他参数 mode owner group

yum的管理

Ansible 提供对 yum 和 apt 的支持

  1. #查看当前包是否安装
  2. [root@localhost ~]# ansible group1 -m yum -a "name=net-tools state=present"
  3. 10.0.15.66 | SUCCESS => {
  4. "ansible_facts": {
  5. "pkg_mgr": "yum"
  6. },
  7. "changed": false,
  8. "msg": "",
  9. "rc": 0,
  10. "results": [
  11. "net-tools-2.0-0.24.20131004git.el7.x86_64 providing net-tools is already installed"
  12. ]
  13. }
  14.  
  15. 10.0.15.60 | SUCCESS => {
  16. "ansible_facts": {
  17. "pkg_mgr": "yum"
  18. },
  19. "changed": false,
  20. "msg": "",
  21. "rc": 0,
  22. "results": [
  23. "net-tools-2.0-0.22.20131004git.el7.x86_64 providing net-tools is already installed"
  24. ]
  25. }

ansible进行用户管理

使用 ‘user’ 模块可以方便的创建账户,删除账户,或是管理现有的账户

  1. 创建用户
    [root@localhost ~]# ansible all -m user -a "name=test password=123456"
  2. [WARNING]: The input password appears not to have been hashed. The 'password' argument must be encrypted for this
  3. module to work properly.
  4.  
  5. 10.0.15.66 | CHANGED => {
  6. "changed": true,
  7. "comment": "",
  8. "create_home": true,
  9. "group": 1001,
  10. "home": "/home/test",
  11. "name": "test",
  12. "password": "NOT_LOGGING_PASSWORD",
  13. "shell": "/bin/bash",
  14. "state": "present",
  15. "system": false,
  16. "uid": 1001
  17. }
  18. 10.0.15.60 | CHANGED => {
  19. "changed": true,
  20. "comment": "",
  21. "create_home": true,
  22. "group": 1002,
  23. "home": "/home/test",
  24. "name": "test",
  25. "password": "NOT_LOGGING_PASSWORD",
  26. "shell": "/bin/bash",
  27. "state": "present",
  28. "system": false,
  29. "uid": 1002
  30. }
  31. 删除用户
  32. [root@localhost ~]# ansible all -m user -a "name=test state=absent"
  33. 10.0.15.60 | CHANGED => {
  34. "changed": true,
  35. "force": false,
  36. "name": "test",
  37. "remove": false,
  38. "state": "absent"
  39. }
  40. 10.0.15.66 | CHANGED => {
  41. "changed": true,
  42. "force": false,
  43. "name": "test",
  44. "remove": false,
  45. "state": "absent"
  46. }
  47.  
  48. 创建组
  49. [root@localhost ~]# ansible all -m group -a "name=test"
  50. 10.0.15.66 | CHANGED => {
  51. "changed": true,
  52. "gid": 1001,
  53. "name": "test",
  54. "state": "present",
  55. "system": false
  56. }
  57. 10.0.15.60 | CHANGED => {
  58. "changed": true,
  59. "gid": 1002,
  60. "name": "test",
  61. "state": "present",
  62. "system": false
  63. }
  64.  
  65. 删除组
  66. [root@localhost ~]# ansible all -m group -a "name=test state=absent"
  67. 10.0.15.60 | CHANGED => {
  68. "changed": true,
  69. "name": "test",
  70. "state": "absent"
  71. }
  72. 10.0.15.66 | CHANGED => {
  73. "changed": true,
  74. "name": "test",
  75. "state": "absent"
  76. }

官方文档:传送门

ansible操作(一)的更多相关文章

  1. ansible操作远程服务器报Error: ansible requires the stdlib json or simplejson module, neither was found!

    通过ansible执行远程命令时报如下异常: Error: ansible requires the stdlib json or simplejson module, neither was fou ...

  2. Ansible 操作windows

      1.主控端安装ansible         1) pip install ansible 2.主控端安装相关的包 pip install http://github.com/diyan/pywi ...

  3. 重新记录 ansible操作hadoop用户的问题

    前提是安装ansible 配置源 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo yum i ...

  4. ansible操作模块相关

    1. 查看模块可用参数命令 ansible-doc -s module_name

  5. Ansible常用模块及API

    Ansible安装 安装EPEL作为安装Ansible的yum源(CentOS6.4): rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel ...

  6. 【Ansible】 基于SSH的远程管理工具

    [Ansible] 参考文档:[http://www.ansible.com.cn/docs/intro.html] 和ansible类似的工具还有saltstack,puppet,sshpass等, ...

  7. 从零开始搭建运维体系 - ansible

    从零开始搭建运维体系 - ansible 基本配置好了局域网内的机器后,第一个遇到的问题就是如何批量操作这么多台机器,ansible就是这么一个自动化运维工具. ansible是一个基于ssh的批量远 ...

  8. 001.Ansible部署RHCS存储集群

    一 前期准备 1.1 前置条件 至少有三个不同的主机运行monitor (MON)节点: 至少三个直接存储(非外部SAN硬件)的OSD节点主: 至少两个不同的manager (MGR)节点: 如果使用 ...

  9. ansible简介,简单实用

    Ansible ansilbe是实现自动化运维的工具,基于python开发,实现批量系统配置,批量程序部署,批量运行命令等功能. ansible是基于模块工作的,自身是没有批量部署的能力.真正具有批量 ...

随机推荐

  1. 交换机 路由器 OSI7层模型

    第1章 网络基础 1.1 网络的出现 解决计算机通讯的需求 实现计算机信息可以传递 1.2 主机之间实现通讯基本要求(三要素) ①. 需要在两台主机之间建立物理连接,物理连接的方式有网线 光纤线 wi ...

  2. 大同世界的Java 和.NET 开发

    1.作为一个科班出生的根正苗红的软件开发人员,我认为现在的一群年轻的程序员总是在讨论JAVA  好还是.NET 好的同时,我作为一个做4年开发的.NET 程序员中间穿插了1年JAVA 开发的来说更加的 ...

  3. hdu2544最短路(dijkstra)

    传送门 dijkstra #include<bits/stdc++.h> using namespace std; const int INF=0x3f3f3f3f; ; int dist ...

  4. VGGnet——从TFrecords制作到网络训练

    作为一个小白中的小白,多折腾总是有好处的,看了入门书和往上一些教程,很多TF的教程都是从MNIST数据集入手教小白入TF的大门,都是直接import MNIST,然后直接构建网络,定义loss和opt ...

  5. GsonFormat插件主要用于使用Gson库将JSONObject格式的String 解析成实体,该插件可以加快开发进度,使用非常方便,效率高。

    GsonFormat插件主要用于使用Gson库将JSONObject格式的String 解析成实体,该插件可以加快开发进度,使用非常方便,效率高. 插件地址:https://plugins.jetbr ...

  6. (1) Python 数据类型功能

    1.int 将字符串转化为数字 a="123"  print(type(a),a) b=int(a)  print(type(b),b) num="0011" ...

  7. Python 3 利用 Dlib 实现摄像头实时人脸检测和平铺显示

    1. 引言 在某些场景下,我们不仅需要进行实时人脸检测追踪,还要进行再加工:这里进行摄像头实时人脸检测,并对于实时检测的人脸进行初步提取: 单个/多个人脸检测,并依次在摄像头窗口,实时平铺显示检测到的 ...

  8. CHAPTER 24 History of Our Planet 第24章 我们行星的历史

    CHAPTER 24 History of Our Planet 第24章 我们行星的历史 Uncovering the bones of ancient beasts is only part of ...

  9. Linux虚拟机安装教程

    必备组件: vmware(程序主题) 链接:https://pan.baidu.com/s/14OplOGOQTVAnf0iDqgDhDQ 提取码:jape centos(Linux系统) 链接:ht ...

  10. Java 内存模型_1

    title: Java 内存模型_1 date: 2017-01-15 17:11:02 tags: [JMM] categories: [Programming,Java] --- 概述 本文记录 ...