ansible晋级操作之ad-hoc命令

所谓的ad-hoc命令!

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

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

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

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

测试操作

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

shell模块使用

[root@localhost ~]# ansible group1 -m shell -a 'echo $PATH'
10.0.15.66 | CHANGED | rc=0 >>
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin 10.0.15.60 | CHANGED | rc=0 >>
/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 !!!注意使用Ansible ad-hoc 命令行接口时(与使用 Playbooks 的情况相反)。尤其注意shell 引号的规则。比如在上面的例子中,如果使用双引号”echo $PATH”,求出PATH”变量在当前系统的值,而我们想要将这个命令传递到其他机器上面
[root@localhost ~]# ansible group1 -m shell -a "echo $PATH"
10.0.15.66 | CHANGED | rc=0 >>
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/go/bin:/root/bin 10.0.15.60 | CHANGED | rc=0 >>
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/go/bin:/root/bin [root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/go/bin:/root/bin

ansible下的scp

[root@localhost ~]# ansible group1 -m copy -a "src=/root/1.txt dest=/root/1.txt"
10.0.15.66 | CHANGED => {
"changed": true,
"checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
"dest": "/root/1.txt",
"gid": 0,
"group": "root",
"md5sum": "d41d8cd98f00b204e9800998ecf8427e",
"mode": "",
"owner": "root",
"secontext": "system_u:object_r:admin_home_t:s0",
"size": 0,
"src": "/root/.ansible/tmp/ansible-tmp-1550550512.6-88436779222448/source",
"state": "file",
"uid": 0
}
10.0.15.60 | CHANGED => {
"changed": true,
"checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
"dest": "/root/1.txt",
"gid": 0,
"group": "root",
"md5sum": "d41d8cd98f00b204e9800998ecf8427e",
"mode": "",
"owner": "root",
"secontext": "system_u:object_r:admin_home_t:s0",
"size": 0,
"src": "/root/.ansible/tmp/ansible-tmp-1550550512.59-19910559807601/source",
"state": "file",
"uid": 0
}

ansible修改文件权限

[root@localhost ~]# ansible group1 -m file -a "dest=/root/1.txt mode=777"
10.0.15.60 | CHANGED => {
"changed": true,
"gid": 0,
"group": "root",
"mode": "",
"owner": "root",
"path": "/root/1.txt",
"secontext": "system_u:object_r:admin_home_t:s0",
"size": 0,
"state": "file",
"uid": 0
}
10.0.15.66 | CHANGED => {
"changed": true,
"gid": 0,
"group": "root",
"mode": "",
"owner": "root",
"path": "/root/1.txt",
"secontext": "system_u:object_r:admin_home_t:s0",
"size": 0,
"state": "file",
"uid": 0
}

修改文件所属用户所属组

[root@localhost ~]# ansible group1 -m file -a "dest=/root/1.txt mode=644 owner=www-data group=www-data"
10.0.15.66 | CHANGED => {
"changed": true,
"gid": 1000,
"group": "www-data",
"mode": "",
"owner": "www-data",
"path": "/root/1.txt",
"secontext": "system_u:object_r:admin_home_t:s0",
"size": 0,
"state": "file",
"uid": 1000
}
10.0.15.60 | CHANGED => {
"changed": true,
"gid": 1001,
"group": "www-data",
"mode": "",
"owner": "www-data",
"path": "/root/1.txt",
"secontext": "system_u:object_r:admin_home_t:s0",
"size": 0,
"state": "file",
"uid": 1001
}

创建与删除

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

yum的管理

Ansible 提供对 yum 和 apt 的支持

#查看当前包是否安装
[root@localhost ~]# ansible group1 -m yum -a "name=net-tools state=present"
10.0.15.66 | SUCCESS => {
"ansible_facts": {
"pkg_mgr": "yum"
},
"changed": false,
"msg": "",
"rc": 0,
"results": [
"net-tools-2.0-0.24.20131004git.el7.x86_64 providing net-tools is already installed"
]
} 10.0.15.60 | SUCCESS => {
"ansible_facts": {
"pkg_mgr": "yum"
},
"changed": false,
"msg": "",
"rc": 0,
"results": [
"net-tools-2.0-0.22.20131004git.el7.x86_64 providing net-tools is already installed"
]
}

ansible进行用户管理

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

创建用户
[root@localhost ~]# ansible all -m user -a "name=test password=123456"
[WARNING]: The input password appears not to have been hashed. The 'password' argument must be encrypted for this
module to work properly. 10.0.15.66 | CHANGED => {
"changed": true,
"comment": "",
"create_home": true,
"group": 1001,
"home": "/home/test",
"name": "test",
"password": "NOT_LOGGING_PASSWORD",
"shell": "/bin/bash",
"state": "present",
"system": false,
"uid": 1001
}
10.0.15.60 | CHANGED => {
"changed": true,
"comment": "",
"create_home": true,
"group": 1002,
"home": "/home/test",
"name": "test",
"password": "NOT_LOGGING_PASSWORD",
"shell": "/bin/bash",
"state": "present",
"system": false,
"uid": 1002
}
删除用户
[root@localhost ~]# ansible all -m user -a "name=test state=absent"
10.0.15.60 | CHANGED => {
"changed": true,
"force": false,
"name": "test",
"remove": false,
"state": "absent"
}
10.0.15.66 | CHANGED => {
"changed": true,
"force": false,
"name": "test",
"remove": false,
"state": "absent"
} 创建组
[root@localhost ~]# ansible all -m group -a "name=test"
10.0.15.66 | CHANGED => {
"changed": true,
"gid": 1001,
"name": "test",
"state": "present",
"system": false
}
10.0.15.60 | CHANGED => {
"changed": true,
"gid": 1002,
"name": "test",
"state": "present",
"system": false
} 删除组
[root@localhost ~]# ansible all -m group -a "name=test state=absent"
10.0.15.60 | CHANGED => {
"changed": true,
"name": "test",
"state": "absent"
}
10.0.15.66 | CHANGED => {
"changed": true,
"name": "test",
"state": "absent"
}

官方文档:传送门

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. 【SoDiaoEditor电子病历编辑器更新啦】--谨以献给那些还在医疗行业奋斗的小伙伴们

    为什么推荐的人这么少~~~~   更新(2017-4-18): 截止目前已知的已有2个三甲医院在使用该编辑器,容我内心澎湃以下,O(∩_∩)O哈哈~   先放github地址:https://gith ...

  2. PHP 用户密码加密函数password_hash

    传统的用户名和密码都采用加盐的方式存储加密信息,盐值也需要存储. 自PHP5.5.0之后,新增加了密码散列算法函数(password_hash),password_hash() 使用足够强度的单向散列 ...

  3. GoLang入门(一)

    1.Go语言的简述 Go语言可能大家对它并不是很了解,因为它相对其他语言来说实在是太年轻了,从创建到现在仅仅十年,09年,谷歌团队初设该想法,到实现也就是10年时间,对于go语言,它不是万能的,每种语 ...

  4. 一个IT男的表白

    致BCD6 CEC0 C3F4 转一轮肩胛骨 倒一杯铁观音 白驹过隙,倏忽两秋 远方有希望和梦想 有火车.微信美颜视频聊天和碧根果 有你的支持 如果身旁没有你 生活无趣失去动力 就像python失去类 ...

  5. final文案+美工展示

    作业要求:https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/1438 团队介绍:thunder 组成员及各位博客地址: 1.王航:htt ...

  6. 王者荣耀交流协会final发布-第一次scrum立会

    1.例会照片 成员王超,高远博,冉华,王磊,王玉玲,任思佳,袁玥全部到齐 master:袁玥 2.时间跨度 2017年12月1日 17:00 — 17:31,总计31分钟 3.地点 一食堂二楼沙发座椅 ...

  7. ModelAndView在页面上取值时value="{contextConfigLocation=<NONE>}"

    后台: mv.getModel().put("initParam", 1); 页面: <input type="hidden" id="init ...

  8. 每日Scrum(10)

    今天我们小组整合了下我们所编辑的程序,然后在界面上进行了修改和少部分的完善,现在就等着下午的验收了 任务展板 燃尽图如下:

  9. SQL语句联表查询

    Natural join:字段名和数据类型相同字段进行等值连接: inner join:与join相同,把符合条件的元组选出来,创建视图时用的即是inner join: left join:左表全选出 ...

  10. Sprint会议2

    昨天:准备查找安卓APP开发的有关资料,安装有关软件 今天:自己制作一个安卓小程序,熟悉一下操作 遇到问题:安装遇到问题,环境配置出现问题