淫秽易怒的人
bigsudo的Python项目详细描述
bigsudo是ansible playbook的一个固执己见的命令行包装器。
功能
它接受作为第一个参数:角色名、路径或url或剧本路径 或网址:
bigsudo role.name # download role and run tasks/main.yml on localhost bigsudo role.name update # do tasks/update.yml bigsudo role.name user@host update # do tasks/update.yml on host bigsudo role.name @host update # with current user bigsudo role.name @host update foo=bar # custom variable bigsudo role.name {"foo":"bar"} # also accepts json without space bigsudo role.name -v # forwards any ansible-playbook argument
注意,bigsudo将自动调用ansible galaxy install on 在任何角色中都可以找到requirements.yml,递归地找到它得到的每个角色 要安装的Galaxy。这意味着yourlabs.docker/requirements.yml也将 如果您的回购协议有此要求,则由Bigsudo安装。yml:
- src: git+https://yourlabs.io/oss/yourlabs.docker
命令行解析的工作原理
两条黄金法则:
- 默认情况下,bigsudo使用--become运行(好吧,它是“bigsudo”),以避免 这个,通过--nosudo。这只是因为我是根 忘记--become比我需要的--nosudo更频繁。
- bigsudo将首先接受bigsudo参数,它们不以破折号开头, 它们要么是没有=的字符串,这意味着它们是位置的 bigsudo python函数的参数,或者是带=的字符串,这意味着 它们是bigsudo命令的关键字参数。
- 从一个参数以破折号开头开始,所有参数都是 转发给Ansible。在传递 以破折号开头的参数。
因此,这两个调用是等价的:
bigsudo yourlabs.fqdn -e foo=bar bigsudo yourlabs.fqdn foo=bar
但这不起作用:
bigsudo yourlabs.fqdn -v foo=bar
因为它将生成ansible将在其中查找的命令 foo=barplaybook:
ansible-playbook -v foo=bar ...
无论如何,bigsudo总是会打印出生成的ansible playbook命令行。
使用Gitlab CI持续部署
使用gitlab ci或drone ci,您可以定义多行env vars,即 $STAGING_HOST=deploy@yourstaging和用于$staging\u vars的json字符串:
{ "security_salt": "yoursecretsalf", "mysql_password": "...", // .... }
然后,您可以在.gitlab-ci.yml:
image: yourlabs/python # example running tasks/update.yml, using the repo as role script: bigsudo . update $staging_host $staging_vars # example running playbook update.yml script: bigsudo ./update.yml $staging_host $staging_vars
本章介绍在 .gitlab-ci.yml:
deploy-staging: image: yourlabs/python stage: deploy script: - mkdir -p ~/.ssh; echo $staging_key > ~/.ssh/id_ed25519; echo $staging_fingerprint > ~/.ssh/known_hosts; chmod 700 ~/.ssh; chmod 600 ~/.ssh/* - bigsudo . $staging_host --extra-vars=$staging_vars only: refs: [master] environment: name: staging url: https://staging.example.com
使用以下命令创建ED25519部署密钥:
ssh-keygen -t ed25519 -a 100 -f deploy.key
将部署密钥上载到目标:
ssh-copy-id -i deploy.key user@staging.host
将其添加到环境变量$staging_key
cat deploy.key
还要在$staging_fingerprint:
中添加主机指纹ssh-keyscan staging.host
在$staging_varsenv var中添加任务所需的所有变量 作为json dict,如前一章所述。