bunker是一个命令行程序,用于在aws中设置ec2进行远程开发或作为备份。它可以克隆您的Git RePOS,并将忽略的文件从您的机器转移到EC2。

aws-bunker的Python项目详细描述


燃料库

bunker是一个命令行程序,用于在aws中设置ec2进行远程开发或作为备份。除此之外,它还可以克隆您的git repo并将忽略的文件从您的计算机传输到ec2。

远程工作,使用蜂窝网络已经有15年的可能了。随着网络的发展,带宽的问题越来越少,但即使在今天的蜂窝网络上,下载大型文件(如Docker图像、ZIP档案等)也不切实际且成本高昂。一种解决方案是通过ssh连接到云上的虚拟机,然后在那里工作,但是跨多台计算机管理git repo和私有或被忽略的文件很快就会出现问题。

有了Bunker,这一过程更容易自动化。您只需要一个运行ubuntu的实例id和aws ec2,就可以运行shell脚本,将源文件复制到.profile,并根据需要复制任意多的repo和忽略的文件。例子:

# init bunker with your instance ID, etc  
$ bunker init  

# save some files to the ignored files list  
$ bunker ignore config.ini .env.production terraform.tfvars  

# run `/home/ubuntu/install-things.sh` on the instance  
$ bunker install /home/ubuntu/install-things.sh  

# source `/home/ubuntu/.prompt` to the .profile on the instance  
$ bunker prompt /home/ubuntu/.prompt  

# clone a local repo on the instance, and then copy over any files from the ignored file list  
$ bunker build -r /path/to/local/repo   

与我们的示例terraform文件(https://gitlab.com/shindagger/bunker" rel="nofollow">https://gitlab.com/shindagger/bunker一起使用时,您可以启动一个全新的ec2,克隆所需的repo,复制忽略的文件,并在大约5分钟内工作。terraform将输出一个实例id,可以用于bunker init。然后,您可以使用一个命令完成其余操作,如:

$ bunker install -y && bunker prompt -y && bunker build -r /path/to/local/repo -y   

有关详细信息,请参阅下面的TerraForm和使用部分。

要求

  • 巨蟒
  • aws cli
  • (地形)

此外,您还需要aws上的ec2实例,最好运行ubuntu>;=18.04。这个ec2需要打开ssh(端口22)和附加的ssm角色(amazonec2roleforsm)。
有关为ec2创建ssm角色的更多信息,请参见:
https://docs.aws.amazon.com/systems manager/latest/userguide/setup instance profile.html"实例配置文件添加权限

安装

$pip安装在所有AWS存储库中

注意:请参见下面的shell脚本和terraform部分:
项目主页:https://gitlab.com/shindagger/bunker rel="nofollow">https://gitlab.com/shindagger/bunker

shell脚本

install提示符子命令假定ec2上有shell脚本。默认名称(不带位置参数)分别为:install essentials.sh.prompt.sh

第一个shell脚本用于基本软件(如python、pip、node和npm)。如果脚本尚未执行,请使用[-e]标志。提示只需在ec2上的~/.profile中生成一个文件。

请参见此处的示例脚本(https://gitlab.com/shindagger/bunker)以及下面的terraform部分:

地形

我们还提供了terraform文件(https://gitlab.com/shindagger/bunker" rel="nofollow">https://gitlab.com/shindagger/bunker),配置后,这些文件将启动一个可用于bunker的ec2实例,并提供了所有示例shell脚本和您的.vimrc。当然,我们鼓励您根据喜好更改这些文件。TerraForm将输出一个实例ID,您可以使用它初始化Bunker。

要配置和使用这些terraform文件:

  1. 克隆此回购协议(https://gitlab.com/shindagger/bunker.git

  2. CD放入repo dir和ls*。默认值。这些是在初始化terraform之前需要编辑的文件。每个文件都需要扩展名.tf.default更改为.tf

  3. 编辑alfa.tf并确保区域正确。

  4. 编辑beta.tf并将s3 bucket更改为您自己的bucket。还要确保区域正确。

  5. 使用aws sdk访问id和密钥编辑terraform.tfvars。还要确保您已使用aws configure配置此帐户

  6. 编辑variables.tf并更改默认值以反映您的愿望。注意:如果还没有,则需要手动创建自己的ssm角色和ssh密钥文件。ec2\u key\u name只是aws中密钥对的名称,而ssh\u private\u key是本地计算机上.pem文件的完整(绝对)路径。

  7. terraform初始化

  8. 地形平面图和地形图应用

  9. < > >

    在您初始化存储库之前

    1. 您有一个ec2实例id(请参见上面的"terraform")

    2. 您有一个目录(前缀),您将在其中保存repositories.txtignoredfiles.txt。您可以复制此repo中的示例文件,并对其进行编辑以反映您的repo和忽略的文件。

    3. 你有一个.pem文件,你知道它的位置路径。您为ec2设置了一个密钥对名称,它使用这个.pem文件。

    4. 你知道ec2的用户名(应该是"ubuntu")。我们可以选择在将来的版本中支持其他操作系统。

    5. 您已经为git提供程序创建了私钥,并在git提供程序设置中添加了公钥。此外,您已将本地ssh配置为使用此密钥,并至少测试或使用过一次。

    6. < > >

      燃料库使用

      $bunker-h

      显示主存储库帮助页并退出

      $bunker build-h

      显示子命令的帮助页build并退出。这将适用于任何可用的子命令

      $bunker初始化

      编写存储库配置文件~/.config bunker.ini如果该文件已经存在,则答案将填充现有值[带下划线],只有在提供替换值时才会被覆盖。

      示例~/.config bunker.ini

      [default]  
      prefix = /Users/username/bunker-config  
      repos = repositories.txt   
      ignored = ignoredfiles.txt  
      pem = /Users/username/somename.pem  
      instance_id = i-04xxxxxxxxxxxx148  
      username = ubuntu  
      gitkeys = /Users/username/.ssh/git_rsa  
      

      $bunker repo path/to/repo/absolute/path/to/another repo../somerepo

      在repo文件中添加或删除repo目录。使用相对或绝对路径。

      $bunker ignore.env.local config.ini terraform.tfvars

      在忽略文件中添加或删除文件名。

      $bunker安装 $bunker安装/home/ubuntu/script.sh

      在EC2实例上安装必要的软件。此命令将在EC2上运行可执行的shell脚本。默认脚本(不定义位置参数)命名为/home/ubuntu/install essentials.sh。这是为了安装使用ec2所必需的任何软件。为了不知道用户希望在ec2上安装什么样的软件,bunker没有安装附带的shell脚本。不过,我们确实在项目主页上提供了示例shell脚本(以及ec2的terraform):
      https://gitlab.com/shindagger/bunker

      $bunker提示
      $bunker prompt/home/ubuntu/another prompt.sh

      /home/ubuntu/.profile中获取自定义提示文件此命令将在/home/ubuntu/.profile中获取文件。默认名称为:/home/ubuntu/.prompt.sh

      $bunker build

      克隆ec2上git repos的列表(repositories.txt),然后将忽略文件的rsync列表(ignored files.txt)从本地repos复制到ec2 repos。git clone将使用ssh,假设您在git提供程序中设置了公钥,一个工作的使用ssh-t git@providerurl至少一次,并使用bunker init设置相关的私钥。

      欢迎加入QQ群-->: 979659372 Python中文网_新手群

      推荐PyPI第三方库


热门话题
Java中的开源字典组件   即使在成功执行删除查询之后,java更新的列表也不会显示在jsp页面中   java Apache:无法启动上下文路径/网站上的失败应用程序   java验证CSV中的特定列   对于具有专用内存的java应用程序,最小堆大小低于最大堆大小有意义吗?   java将数组中的值转换为多维数组   java在给定程序中,垃圾收集器在对象被取消引用之前正在运行。。。使用jre 7(32位)   java在运行时动态刷新文件夹   eclipse如何解决“java.net.BindException:地址已在使用:JVM_Bind”错误?   Java数组与数组   每次任务完成任务时,Java多线程都会安排任务   java部分编译时使用maven编织第三方jar   java Dokku单一回购中的多个应用程序   用apachevelocity生成javac/C++语言文件   java如何使用spring应用程序上下文中的属性文件实例化列表   java访问智能卡文件结构   具有GlobalMethodSecurity的java自定义UserDetailService循环引用   java如何集成Spring和JSF