Ansible 安装

只需要在ansible 服务器上安装
yum install -y epel-release
yum install -y ansible
 
 
服务器生成密钥对
ssh-keygen -t rsa  直接回车即可,不用设置密钥密码
 
把公钥(id_rsa.pub)内容放到对方客户端机器的/root/.ssh/authorized_keys里面
 
 
Ansible更改配置文件
 
vi  /etc/ansible/hosts  //增加

[adservers]
172.20.0.70

客户端 建立一个脚本

[root@adserver4 sh]# cat /data/sh/adserver_update.sh
#!/bin/bash

pidno=`ps aux|grep adserver-beta|grep -v "grep"|awk '{print $2}'`

kill -9 $pidno

if [ $? -ne 0 ]; then
echo "old adserver kill failed"
exit 1
fi

sleep 5

adserverpid=`ps aux|grep adserver-beta|grep -v "grep"|awk '{print $2}'`

if [ "$adserverpid" ];then
echo "new version adserver is running now"

fi

建立另外一个脚本

[root@adserver4 sh]# cat /data/sh/packetanal_update.sh
#!/bin/bash

pidno=`ps aux|grep packetAnal|grep -v "grep"|awk '{print $2}'`

kill -9 $pidno

if [ $? -ne 0 ]; then
echo "old packetAnal kill failed"
exit 1
fi

sleep 5

packetpid=`ps aux|grep packetAnal|grep -v "grep"|awk '{print $2}'`

if [ "$packetpid" ];then
echo "new version packetAnal is running now"

fi

配置可执行权限

chmod +x /data/sh/*.sh

服务器上配置 playbook 的yml文件

[root@test-server28 ansible]# cat /etc/ansible/adserver_update.yml
---
- name: handlers adserver
hosts: adservers
user: root
tasks:
- name: copy file
copy: src=/etc/ansible/adserver-beta dest=/data/website/ owner=root group=root mode=0755
notify: adserver handlers
handlers:
- name: adserver handlers
shell: /bin/bash /data/sh/adserver_update.sh

[root@test-server28 ansible]# cat /etc/ansible/packetanal_update.yml
---
- name: handlers adserver
hosts: adservers
user: root
tasks:
- name: copy file
copy: src=/etc/ansible/packetAnal dest=/data/website/ owner=root group=root mode=0755
notify: packetAnal handlers
handlers:
- name: packetAnal handlers
shell: /bin/bash /data/sh/packetanal_update.sh

在客户端上删除 adserver, packetanal文件

执行ansible 分发进程

[root@test-server28 ansible]# ansible-playbook /etc/ansible/packetanal_update.yml

PLAY [handlers adserver] **************************************************************************************************************************************************

TASK [Gathering Facts] ****************************************************************************************************************************************************
ok: [172.20.0.70]

TASK [copy file] **********************************************************************************************************************************************************
changed: [172.20.0.70]

RUNNING HANDLER [packetAnal handlers] *************************************************************************************************************************************
changed: [172.20.0.70]

PLAY RECAP ****************************************************************************************************************************************************************
172.20.0.70 : ok=3 changed=2 unreachable=0 failed=0

显示进程文件分发成功, 进程重新启动

[root@test-server28 ansible]# ansible-playbook /etc/ansible/adserver_update.yml

PLAY [handlers adserver] **************************************************************************************************************************************************

TASK [Gathering Facts] ****************************************************************************************************************************************************
ok: [172.20.0.70]

TASK [copy file] **********************************************************************************************************************************************************
changed: [172.20.0.70]

RUNNING HANDLER [adserver handlers] ***************************************************************************************************************************************
changed: [172.20.0.70]

PLAY RECAP ****************************************************************************************************************************************************************
172.20.0.70 : ok=3 changed=2 unreachable=0 failed=0

 

ansible 拷贝文件并重启服务的更多相关文章

  1. Ansible 拷贝文件或目录

    写法如下: [root@localhost ~]$ ansible 192.168.119.134 -m copy -a "src=/etc/passwd dest=/tmp/passwd ...

  2. Ansible拷贝文件遇到的问题

    ansible报错Aborting, target uses selinux but python bindings (libselinux-python) aren't installed 报错内容 ...

  3. Linux centosVMware 自动化运维Ansible介绍、Ansible安装、远程执行命令、拷贝文件或者目录、远程执行脚本、管理任务计划、安装rpm包/管理服务、 playbook的使用、 playbook中的循环、 playbook中的条件判断、 playbook中的handlers、playbook实战-nginx安装、管理配置文件

    一.Ansible介绍 不需要安装客户端,通过sshd去通信 基于模块工作,模块可以由任何语言开发 不仅支持命令行使用模块,也支持编写yaml格式的playbook,易于编写和阅读 安装十分简单,ce ...

  4. 使用rcp命令实现从远程机器拷贝文件

    rcp:远程文件复制 使用rcp命令可以在远程主机之间复制文件,如果同时指定2个以上的文件或目录,且最后的目的地是一个已经存在的目录,则他会把前面指定的所有文件或目录复制到该目录中. rcp命令语法: ...

  5. Java FtpClient 实现文件上传服务

    一.Ubuntu 安装 Vsftpd 服务 1.安装 sudo apt-get install vsftpd 2.添加用户(uftp) sudo useradd -d /home/uftp -s /b ...

  6. Mac OS X下高速拷贝文件路径

    文件路径表示的是文件在文件系统里的位置,无论是用命令行操作的Linux程序猿还是使用windows的广大用户.都难免会有这种需求 在windows上复制当前文件夹的路径有一个特别方便的方式,仅仅须要用 ...

  7. Linux Systemd——在RHEL/CentOS 7中启动/停止/重启服务

    RHEL/CentOS 7.0中一个最主要的改变,就是切换到了systemd.它用于替代红帽企业版Linux前任版本中的SysV和Upstart,对系统和服务进行管理.systemd兼容SysV和Li ...

  8. 在CentOS 7中启动/停止/重启服务

    RHEL/CentOS 7.0中一个最主要的改变,就是切换到了systemd.它用于替代红帽企业版Linux前任版本中的SysV和Upstart,对系统和服务进行管理.systemd兼容SysV和Li ...

  9. linux系统,服务器与服务器拷贝文件

    服务器与服务器拷贝文件命令 scp -P (服务器端口)-r 拷贝文件名称列表    远程服务器用户@远程服务器ip :(文件放置目录) 1.将本地home目录下的apache-tomcat-8.0. ...

随机推荐

  1. 修改国内yum源

    yum的源配置文件名为:CentOS-Base.repo 一般情况是在/etc/yum.repos.d目录下有CentOS-Base.repo 备份CentOS-Base.repo文件 打开这个网站h ...

  2. 使用pscp命令在Windows与linux之间拷贝文件

    在Linux环境下做开发时,我们可能会在windows下远程控制Linux系统,本文介绍如何使用putty的pscp.exe在Windows和 Linux(本文使用fedora)之间copy文件. 工 ...

  3. sqlite数据库的char,varchar,text,nchar,nvarchar,ntext的区别

    1.CHAR.CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充. 2.VAR ...

  4. Codeforces 897D. Ithea Plays With Chtholly (交互)

    题目链接:D. Ithea Plays With Chtholly 题意: 给你n张纸,在纸上写字(在 1 - c之间)可以写m次数 (,).(主要是交互,让你判断) 题解: 首先,看到m>=n ...

  5. [转]maven打包报错:Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.5:test

    源文URL:http://blog.csdn.net/caiwenfeng_for_23/article/details/44514947 mvn compile  没有问题,mvn package的 ...

  6. List Set Map 的区别 用法以及特点(转载)

    List,Set,Map是否继承自Collection接口?  答:List,Set是,Map不是. Collection是最基本的集合接口,一个Collection代表一组Object,即Colle ...

  7. Linux - ubuntu读取/root/.profile时发现错误:mesg:ttyname fa

    启动ubuntu,以root用户登陆,打开命令行终端 输入命令:#vim /root/.profile 找到.profile文件中的mesg n 将其替换成tty -s && mesg ...

  8. Django_实现分页

    需求: 对于有很多数据,并不希望一次性全部展现在一个页面,需要一个分页的,定好每一页显示的内容 那,如何满足这个需求呢? 通过第三方模块  django-pure-pagination pip ins ...

  9. Android之MaterialDesign应用技术2-仿支付宝上滑搜索框缓慢消失

    PS:在这之前也就是上一篇介绍了MaterialDesign一些滑动删除.标题栏的悬浮效果等,如果没看过第一篇的小火鸡可以看一下,因为这篇是接着上一篇写的,有一些东西上一篇写过了这里就不在重复了(Ma ...

  10. Servlet--ServletRequest接口,ServletResponse接口

    ServletRequest接口 定义 public interface ServletRequest 定义一个 Servlet 引擎产生的对象,通过这个对象, Servlet 可以获得客户端请求的数 ...