您还可以阅读其他章节:
【阿里云运维部署工具AppDeploy详细教程】之介绍安装
【阿里云运维部署工具AppDeploy详细教程】之高效技巧
【阿里云运维部署工具AppDeploy详细教程】之应用部署
阿里云AppDeploy
实现为两个版本,两个版本的基本功能是一致的,不同之处是:普通版的描述语言为伪代码描述,没有太多严格的语法格式。Python
版使用Python
语言描述,遵循python
对齐语法等规则。本文以Python
版本为例进行说明。
1.基本使用方法
AppDeploy
的使用格式是在命令行执行
adep +
参数
的命令格式运行,其执行的任务依据是根据其当前工作目录下的appdeploy.py
(默认)这个python
文件作为执行描述文件,若用户有自定义的描述文件,可用”-f”
参数指定。使用方式细分有两种:
1)通过命令行,直接执行命令
格式:$
adep[options] -- [shell command]
Option:为命令选项定义执行参数; “--”:双横线,为分割符将前面的参数和后面的shell命令分开; [shell command]:shell命令,会被在远端服务器执行; |
env.hosts = ['host1', 'host2']: 表示两个远端服务器,分别是host1和host2.
env.hosts = ['host1', 'user2@host2', 'host3']
: 表示一共三个远端服务器host1
、host2
、host3
,其中host2
使用user2
用户名登录,host1
和host3
的用户名使用env.user
定义的值;
|
env.hosts = ['host1', 'host2']
def task1():
run(ls)
|
@parallel
def task1():
pass
def task2():
pass
$ adep -H host1,host2,host3 task1task2
|
env.roledefs = {
'apphosts': [‘host1', 'host2', 'host3'],
'webhosts': ['host3', 'host4']
}
@roles('apphosts')
@hosts('host3', 'host5')
def task1():
run('ls/var/www')
|
get('/path/to/remote_file.txt', 'local_dir')
|
新建local_dir
并保存文件;
|
get('/var/log/apache2/access.log', '%(path)s')
|
下载access.log
的文件,保存在相同目录;
|
get('/var/log', '%(path)s')
|
递归下载/var/log
下面所有文件;
|
get('/var/log', ‘%(host)s/%(path)s’)
|
多个host
时,保存在不同目录;
|
put('/path/test.txt', '/root/') 将本地文件test.txt上传到指定的服务器/root下;
put('/path/test', '/root/')
将本地文件夹下面所有文件上传到指定服务器/root
下;
put('/path/test.txt', '/root/')
将本地文件test.txt
上传到指定的服务器/root
下,并设置权限;
|
env = prompt('Please specify target environment: ')可以在运行时输入内容,并保存在env中;
prompt('Specify dish: ', 'dish', default='spam & eggs')
设置默认输入内容,不输入是用默认值;
prompt('Please specify level: ', key='nice', validate=int)
设定输入的内容只能是整数;
|
env.hosts = [‘host1’, ‘host2’]
@parallel
def task1():
pass
|
@task
def task1():
run("ls")
def task2():
run("pwd")
$ adep –list
|
# -*- coding: utf-8 -*- from src.api import * env.ak_id="xxx" env.ak_sec="xxx" env.user = 'root' env.password='xxx' env.hosts = ['101.200.184.144','root@123.57.53.193:22'] env.roledefs = { 'apphosts': ['101.200.184.144'], 'webhosts': ['root@123.57.53.193:22'] } @task def file_copy(): put('./test', '/root/') get('/root/test', './test') @task @roles('webhosts') def remote_exec(cmd): local('echo "run your cmd on remote hosts"') run(cmd) def useless(): run('pwd') | # Access Key ID # Access Key Secret # 统一用户名 # 统一密码 # 定义hosts变量 # 定义不同用户组 # 表明这个函数可以被执行 # 上传文件夹 # 下载文件夹 # 指定服务器集群 # 本地执行命令 # 远程执行命令 # 没有@task,不能被执行 |
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。