用ansible 完成一次性的工作(ad-Hoc)工作

ansible 真正强大的功能是它的playbook,但是在日常的工作中通过会遇到一些工作,它们只是需要我们偶尔操作一下;比较说重启一下

操作系统;像这样的工作就用不着ansible-playbook这样的牛刀了,用ansible就行了。

一、ad-Hoc 在多台主机上并行执行命令:

  在刚开始进入linux 世界的时候呀,为了在多台linux主机上启动mysql数据库,我会一个个的登录上对应的linux主机,然后执行service mysqld start

  混了一段时间后深知,勤劳也架不主机器多呀!后来呀就用bash 写一个for 循环,这样自己就从手工的劳动的释放出来了;但是这样事实上还是不是

  太行的,主要表现在for 循环是串行执行的,也就是只有在启动完第一台主机的mysql后才会去启动第二台机器的mysql;也许你想到了"&"号可以使命令

  能在后台执行,但是这个也是有问题的,因为这样就会一有太多的进程在后台执行,不知道自己主机的配置能不能跟的上;虽然我的理由有点牵强,但是

  我想表达的是for 循环的形式的控制粒度太“粗糙”了。 看ansible 怎么做

  1、启动work这台主机上的mysql服务

ansible work -a‘systemctl start mysql ‘ -uroot --become -f 1
work | SUCCESS | rc=0 >>

ps -ef | grep mysql
mysql      5146      1  8 14:48 ?        00:00:00 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
root       5184   4538  0 14:48 pts/1    00:00:00 grep --color=auto mysql

  从ps 中的内容可以看到mysql数据库已经启动了

  -u 用于指定sudo 的目标用户,我这里设定的是root用户

  --become 是一个开着,它用于控制-u这个参数是不生效

  -f 用于设置并行度,我这里设置为了1,因为work就是我的本机,也就是说目标主机只有一台,开并行并没有什么用。

  2、文件传输把本地的/etc/my.cnf 传到目标机器的/tmp/my.cnf

ansible work -m copy -a‘dest=/tmp/my.cnf src=/etc/my.cnf‘
work | SUCCESS => {
    "changed": true,
    "checksum": "591767b936bdf730031e7964d548547327e30ad0",
    "dest": "/tmp/my.cnf",
    "gid": 1000,
    "group": "jianglexing",
    "md5sum": "278fe9fd1d837086edb3adbb2cd627df",
    "mode": "0664",
    "owner": "jianglexing",
    "size": 4376,
    "src": "/home/jianglexing/.ansible/tmp/ansible-tmp-1501052194.1641386-183941868489754/source",
    "state": "file",
    "uid": 1000
}

  3、软件包管理(安装httpd)

ansible work -m yum -a‘name=httpd state=present‘ -uroot --become
work | SUCCESS => {
    "changed": true,
    "msg": "",
    "rc": 0,
    "results": [
        "Loaded plugins: fastestmirror, langpacks\nLoading mirror speeds from cached hostfile\n * epel: mirrors.ustc.edu.cn\nResolving Dependencies\n--> Running transaction check\n---> Package httpd.x86_64 0:2.4.6-45.el7.centos will be installed\n--> Processing Dependency: httpd-tools = 2.4.6-45.el7.centos for package: httpd-2.4.6-45.el7.centos.x86_64\n--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.4.6-45.el7.centos.x86_64\n--> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.4.6-45.el7.centos.x86_64\n--> Running transaction check\n---> Package apr.x86_64 0:1.4.8-3.el7 will be installed\n---> Package apr-util.x86_64 0:1.5.2-6.el7 will be installed\n---> Package httpd-tools.x86_64 0:2.4.6-45.el7.centos will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package            Arch          Version                    Repository    Size\n================================================================================\nInstalling:\n httpd              x86_64        2.4.6-45.el7.centos        local        2.7 M\nInstalling for dependencies:\n apr                x86_64        1.4.8-3.el7                local        103 k\n apr-util           x86_64        1.5.2-6.el7                local         92 k\n httpd-tools        x86_64        2.4.6-45.el7.centos        local         84 k\n\nTransaction Summary\n================================================================================\nInstall  1 Package (+3 Dependent packages)\n\nTotal download size: 3.0 M\nInstalled size: 9.9 M\nDownloading packages:\n--------------------------------------------------------------------------------\nTotal                                               18 MB/s | 3.0 MB  00:00     \nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n  Installing : apr-1.4.8-3.el7.x86_64                                       1/4 \n  Installing : apr-util-1.5.2-6.el7.x86_64                                  2/4 \n  Installing : httpd-tools-2.4.6-45.el7.centos.x86_64                       3/4 \n  Installing : httpd-2.4.6-45.el7.centos.x86_64                             4/4 \n  Verifying  : httpd-tools-2.4.6-45.el7.centos.x86_64                       1/4 \n  Verifying  : apr-1.4.8-3.el7.x86_64                                       2/4 \n  Verifying  : httpd-2.4.6-45.el7.centos.x86_64                             3/4 \n  Verifying  : apr-util-1.5.2-6.el7.x86_64                                  4/4 \n\nInstalled:\n  httpd.x86_64 0:2.4.6-45.el7.centos                                            \n\nDependency Installed:\n  apr.x86_64 0:1.4.8-3.el7                     apr-util.x86_64 0:1.5.2-6.el7    \n  httpd-tools.x86_64 0:2.4.6-45.el7.centos    \n\nComplete!\n"
    ]
}

----

时间: 2024-10-03 19:52:33

用ansible 完成一次性的工作(ad-Hoc)工作的相关文章

Ansible 七(ad hoc任务)

Ansible 七(ad hoc任务) ansible任务 ad hoc任务就是执行shell命令.或shell脚本. ansible ad-hoc命令 可以执行一些简单的命令,不需要将这些执行的命令特别保存下来. 适合执行简单的命令. ansible playbook 可以解决比较复杂的任务,可以将命令保存下来. 适合执行配置管理或部署客户机. 并行性和shell命令 重启webservers主机组里的所以机器,每次重启10台 ansible webservers -a "/sbin/rebo

iOS开发最最基础之打包Ad Hoc应用

首先,介绍下什么是Ad Hoc? Ad Hoc简单的定义是:把iOS工程打包成ipa包后,通过Ad Hoc证书签名做分发测试的行为. Ad Hoc证书可以分为两类: 1.99美元的开发者账号生成的. 2.299美元的开发者账号生成的. 由于我没有299美元的开发者账号,故本文只针对99美元的开发者账号的情况作阐述. 接下来,我将从以下5点进行操作描述: 1.AppID(如果有配置好了,可以忽略). 2.certificate 3.device 4.profile 5.Xcode打包 1.AppI

ns3模拟无线Ad hoc 网络通信

Ad hoc网络 Ad hoc网是一种多跳的.无中心的.自组织无线网络,又称为多跳网(Multi-hop Network).无基础设施网(Infrastructureless Network)或自组织网(Self-organizing Network).整个网络没有固定的基础设施,每个节点都是移动的,并且都能以任意方式动态地保持与其它节点的联系.在这种网络中,由于终端无线覆盖取值范围的有限性,两个无法直接进行通信的用户终端可以借助其它节点进行分组转发.每一个节点同时是一个路由器,它们能完成发现以

iOS程序发布测试-生成ad hoc证书

转自: http://blog.sina.com.cn/s/blog_68444e230100srdn.html iOS程序发布测试3-生成ad hoc证书 iOS证书分2种,1种是开发证书,用来给你(开发人员)做真机测试的:1种是发布证书,发布证书又分发布到app store的(这里不提及)和发布测试的ad hoc证书. 那ad hoc证书和开发证书区别在哪里?如果你的tester(团队测试人员.客户)都能将测试设备拿到你面前,直接插到你的mac开发机上,你可以直接将程序"灌"进去,

解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问的方法

报错内容是:SQL  Server 阻止了对组件 'Ad Hoc Distributed Queries' 的  STATEMENT'OpenRowset/OpenDatasource'  的访问,因为此组件已作为此服务器安全配置的一部分而被关闭.系统管理员可以通过使用 sp_configure 启用 'Ad Hoc  Distributed Queries'.有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL  Server 联机丛书中的 "外围应用

Ad Hoc Distributed Queries的启用与关闭

启用Ad Hoc Distributed Queries: exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distributed Queries',1 reconfigure 关闭Ad Hoc Distributed Queries: exec sp_configure 'Ad Hoc Distributed Queries',0 reconfigure exec sp_conf

ios开发 ad hoc怎么用

简单的说就是这样 ad hoc 方式是苹果用来给未上线的app做测试用的,首先你要在苹果开发平台上申请一个ad hoc的证书,再在profile中生成一个ad hoc 的profile文件(只需要在生成的时候选中该证书就行),然后下载下来就可以了. ios中怎么生成adhoc描述文件 hypo421 | 浏览 338 次  2016-03-02 10:04 2016-03-02 10:47 最佳答案 ad hoc 方式是苹果用来给未上线的app做测试用的,首先你要在苹果开发平台上申请一个ad h

Optimize For Ad Hoc Workloads

--临时工作负载优化   即席查询:也就是查询完没放到Cache当中,每次查询都要重新经过编译,并发高的时候很耗性能: 参数化查询: 一方面解决了重编译问题,但随着数据库数据数据的变更,统计信息的更新,可能缓存里的缓存计划已经不是查询优化器想要的结果: Above  SQL server 2008: 第一次adhoc查询时候,cache会缓存一个存根的执行计划,本质上是一个300字节的标记,告诉SQLserver这个查询已经跑过了一次:如果使用默认值全部缓存计划最小大小为16KB: 那么问题来了

关于Ad Hoc发布的一点体会

项目中要用到推送因此之前的Wildcard App ID(通用AppID)就不能用了必须使用Explicit App ID.设置好AppID后我又创建了Provisioning Profile这次选择的时Ad Hoc如下图 将生成的profile下载双击安装到xcode中.然后Product->ArchiveArchive完成后出现以下界面 选择Export再出现的以下界面上选择"Save for Ad Hoc Deployment": 注意这里要特别说一下在以下界面用户需要选择

iOS开发之使用Ad Hoc进行测试

由于最近某个项目需要给别人测试,使用的是Ad Hoc方法 首先登录开发者官网配置证书 1.添加Certificates,从电脑获取certSigningRequest然后添加进去 2.在Identifiers里面的App IDs添加要调试App的Bundle ID和名字 3.在Devices里面添加要给别人测试的手机的UDID 前几步都和真机调试一样,简单说明一下 4.在Provisioning Profiles 里面添加profiles的时候选择Ad Hoc ??continue 选择要调试的