1. 程式人生 > >用ansible 完成一次性的工作(ad-Hoc)工作

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

checksum nis -c 用戶 一個個 version 完成 ansible apr

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 -asystemctl 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 -adest=/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 -aname=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"
    ]
}

----

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