淫秽易怒的帕斯分布

playlabs的Python项目详细描述


PlayLabs:淫秽的Ansible发行版
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

PlayLabs将简单的Ansible模式与打包的角色结合在一起,创建一个由Docker编排的PaaS,用于开发到生产的原型产品。



对于ha,您需要自己完成ansible插件,或者使用kubernetes……但是playlabs会做任何其他事情,甚至可以配置自己的sentry或kubernetes服务器!

disclamer:也许它甚至对你有用,但到目前为止,这还远远没有GraceTein.By/>快速启动
BR/> BSH用户用您的密钥和安全的SSHD和无密码SUDO::
PrasListinit root @ 1.2.3.4BR/>所有选项都是可选选项。角色:

playlabs安装ssh、docker、防火墙、nginx@somehost


并部署项目,示例:


playlabs@somehost deploy image=betaguv/mrs:master
playlabs@somehost deploy
image=betaguv/mrs:master
plugins=postgres,django,uwsgi
backup_password=foo
prefix=ybs
instance=hack
env.secret_key=itsnotesecret
playlabs@somehost deploy
prefix=testenv
instance=$ci branch
image=$ci_registry_image:$ci commit_sha

如果您有这项工作,则创建清单是继续工作的方法,无论您是否希望版本配置、为CI添加部署用户、配置机密备份密码,添加ssh密钥…:


=pip3安装--user-e git+https://yourlabs.io/oss/playlabs\egg=playlabs


~/.local/bin/playlabs

init
==


初始化意味着从一个裸机系统转到一个有自己用户的系统,
ssh密钥、dotfiles、sudo访问、安全sshd,以及执行ansible所需的所有依赖项,如python3。如果
您有一个ansible清单存储库,将您的朋友列表存储在
yml中,它也会安装您的朋友帐户。


在某些情况下,您可能需要向ansible传递额外的选项,例如如果
您的安装提供了一个密码sudo,请添加`--ask sudo pass``或在cli中输入
密码,因为初始化将删除:

playlabs init@somehost
playlabs init user:pass@somehost
playlabs init user@somehost--ask sudo pass
playlabs init root@somehost

1。角色
==


如果要部署项目,则需要安装由三个角色组成的paas:docker、firewall和nginx。nginx角色设置
两个容器nginx proxy监视docker socket和内省
docker container环境变量(例如virtual_host)来重新配置
本身,它甚至支持uwsgi。另一个容器是nginx-letsencrypt,它与nginx代理容器共享一个证书卷,并监视docker
容器的套接字和letsencrypt_email等内省变量来配置证书。



-nginx letsencrypt container生成证书,
-其他docker container具有上述操作所必需的环境变量

cli本身非常简单:

playlabs安装docker、防火墙、nginx@somehost;项目角色的paas安装sendmail、netdata、mailcatcher,gitlab@staging
playbab安装sendmail、netdata、sentry user@production

l角色和playlabs角色,是指在
playlabs中,他们努力让东西在docker中运行,以利用nginx代理的
架构。


playlabs当然可以配置sendmail,但也有为开发人员提供
基于docker的全功能邮件服务器或邮件收集器实例的角色,
例如,培训或准备环境。

从“宠物”到“牛”。

但是如果你已经是一个易受攻击的黑客,那么比起Docker compose所提供的功能,比如像在你的应用程序中一样管理SDN上的用户和角色,Ansible做一个
**更多的**会更好。
但问题是,您可以在一个命令中生成它,并将其与服务器的其余部分集成,甚至可以依赖ansible在自己的应用程序中提供细粒度rbac。项目:部署
===========


将“项目”角色设置为通用角色,涵盖从开发到生产的项目开发所需的基础设施。生成一个环境,这里有一个测试这个repo的示例映像:



如果ansibe找到它,它将默认使用IP地址,使用
dns选项“dns=yourdns.com”设置dns,或者在“your inventory/group-vars/all/project.yml”的“project-staging-dns”yaml
变量中设置它。这是因为默认前缀是“project”,默认实例是“staging”。让我们学习一种指定变量的新方法,添加到
变量::

instance=production

如果在资源清册的“your project production”组中配置主机,
则无需再指定主机:


3。项目:插件



PostgreSQL或django或uwsgi支持通过项目插件提供,
postgresSQL或django或uwsgi支持通过项目插件提供,
您可以通过以下方式激活:


/>-指定`-p postgres,uwsgi,django``
-配置``youprefix你的实例插件``youprefix你的实例插件=[postgres,uwsgi,django]```
-添加到dockerfile``env plaplaylabs/env playlabs或者django或者ujango或者uwsgi或者uwsgi,uwsgi是的uwsgi,django``

插件的顺序很重要,首先让postgres确保在项目映像之前启动postgres。

自动加载的
-deploy.pre.yml:在部署项目映像之前要执行的任务
-deploy.post.yml:在部署项目映像之后要执行的任务
-backup.pre.sh:在备份之前包含在backup.sh模板中
-backup.post.sh:在备份之前包含在backup.sh模板中
-restore.pre.sh:包含在restore.sh还原前模板
-restore.post.sh:还原前包含在restore.sh模板中

5。库存(CFG的Git版本控制)
==
==


>大多数角色都要求库存非常有趣。启动一个空存储库
,在其中存储角色应使用的数据::


sts:
yourhost.com:
其他主机:
fqdn:yourdomain.tld
ansible_ssh_port:22
ansible_ssh_host:123.12.12.23


子级:
网络数据:
主机:
主机


在上面,您创建了一个包含主机的网络数据组。执行不带显式@target的netdata角色将自动在主机上安装netdata,这多亏了它。

我们可以使用丰富的符号,例如
此符号一次将两个主机添加到两个角色::


子级:
NetData Mailcatcher:
主机:[yourhost.com,otherhost]

现在,让我们将一些
用户添加到``your inventory/group-vars/all/users.yml``::

--
用户:
-名称:jl
第一个用户名:john;由django角色使用,例如
email:aoeu@example.com
键:'ssh-…'
角色:
ssh:sudo
k8s:cluster-admin
sentry:超级用户

请注意,用户的角色是一个二维矩阵:每个键或值可能都对应一个可转换的角色名,另一个是该角色中的用户级别,这就是为什么角色是一个键-值对。

它将安装所有用户。


options
==


----


>您可以喜欢的一些变量::

-e key=value;将变量“key”设置为“value”
-e'{key:“value”};json中相同变量
-i 1.2.4.4,将主机通过IP添加到此播放
--限制1.2.4.4,#将播放执行限制在这些主机上
--使用其他用户;指定特定的用户名
--noroot;不要尝试自动成为根用户


letsencrypt_email=您的@…


角色变量
----


基变量在“playlabs/roles/rolename/vars/main.yml”中定义,并以“rolename”开始
,它们可以在清单的
`group-vars/all/rolename.yml`中重写。


生活在playlabs/roles中,与ansible roles共享'standard directory
而不是用许多服务污染主机。


project variables
---------


*}基值引用inventory中的mrs_production{image,*}instance=production prefix=mrs

----


但它也会试图通过内省docker镜像来找到它,比如:

env playlabs插件postgres,django,uwsgi,sentry


ASE plugin变量以“project_pluginname”开头,特殊的“project_pluginname_env”变量应该是dict,它们将被合并到
将环境变量添加到项目容器中,project_env将是所有插件env的合并



plugin env vars最好使用可重写的变量。


plugin structure
----



>默认插件位于playlabs/plugins中,并具有以下文件:

-`backup.pre.sh`从容器中取出文件并将其添加到$backup
`变量
-`backup.post.sh`清除备份完成后取出的文件
`restore.pre.sh`清除要从
`restic backup repository中提取数据的位置
-`restore.post.sh`加载新数据并在快照版本中重新启动项目后清除,
-`deploy.pre.yml`负责项目部署前执行的任务,即spawn
`postgres
-`deploy.post.yml`负责项目部署后执行的任务,即
`create users from inventory
-`vars.yml`插件变量声明

它发生在/home/yourprefix实例中。内容取决于激活的插件。


如果inventory定义了dsn,则使用lftp上载
-`restore.sh`如果inventory取消了dsn,则使用lftp恢复安全备份存储库
`不带参数的列表快照。使用
`snapshot参数`继续还原该快照,包括project
`image version和plugin data
-`prune.sh`删除playlabs为您旋转的不需要的旧备份快照
-`log`日志,只需填写日志文件,它将执行
a copy truncate,但在需要普罗米修斯或其他

才能启用备份之前,您需要设置备份密码,可以使用-e,也可以通过您的pefix实例备份密码设置备份密码。

restic存储库是加密的,如果您设置了lftp dsn或
前缀实例备份dsn,那么它将使用lftp对它们进行镜像。如果
丢弃本地restic存储库并运行restore.sh,那么它将使用lftp获取
存储库。

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

推荐PyPI第三方库


热门话题
selenium webdriver找不到与包含Java的字符串匹配   java在Edittext中输入十进制值?   java有没有办法检查RDBMS数据库表的读写信息?   安卓 ZipArchiveEntry提供java。尼奥。查塞特。格式错误的异常   elasticsearch弹性搜索java特定配置   java只使用类属性jdk1的子集过滤ArrayList中的重复项。6.   java如何使用GPG加密对HDFS中的文件进行加密/解密   Java输出XML文件和CDATA   java无法删除另一个片段中的子片段   java javafx黑屏错误边框窗格。设定中心   这两个程序之间的java差异   restlet中的java“找不到(404)”错误   java使用JAX WS连接到SOAP   javafx:表行闪烁   java无法从“活动”文件夹打开图像?   java Windows在单击按钮时未打开   JAVAutil。scanner Java scanner hasNextLine返回false   java使用api v3 安卓获取youtube私有播放列表   java修复int转换并为类添加一个返回