下流Ansible运行器
项目描述
Bigsudo是一个对ansible-playbook有偏见的命令行包装器。
大sudo要正常工作,您必须安装ansible-playbook命令!
功能
它接受第一个参数:角色名称、路径或URL,或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,在它找到的任何角色中安装requirements.yml,递归地在它安装的每个角色中安装。这意味着如果您的仓库有这个requirements.yml,bigsudo也会安装yourlabs.docker/requirements.yml
- src: git+https://yourlabs.io/oss/yourlabs.docker
命令行解析如何工作
三个黄金法则
Bigsudo默认使用--become运行(嗯,它是“bigsudo”),为了避免这种情况,请传递--nosudo。这仅仅是因为我个人是root用户,经常忘记--become比需要--nosudo更频繁。
Bigsudo将首先接受bigsudo参数,它们不以短横线开头,要么是不包含=的字符串,这意味着它们是bigsudo Python函数的位置参数,要么是包含=的字符串,这意味着它们是bigsudo命令的关键字参数。
从以短横线开头的参数开始,所有参数都转发给ansible。 您不能在传递以短横线开头的参数之后传递bigsudo参数。
因此,这两个调用是等效的
bigsudo yourlabs.fqdn -e foo=bar bigsudo yourlabs.fqdn foo=bar
但这将不起作用
bigsudo yourlabs.fqdn -v foo=bar
因为它将生成Ansible查找的命令,其中包含foo=bar playbook
ansible-playbook -v foo=bar ...
Bigsudo无论如何都会打印出生成的ansible-playbook命令行。
使用Gitlab-CI进行持续部署
使用gitlab-ci或drone-ci,您可以定义多行环境变量,例如,使用$STAGING_HOST=deploy@yourstaging和JSON字符串作为$STAGING_VARS
{ "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_vars环境变量中添加您任务所需的所有变量,作为前一章中描述的JSON字典
项目详情
bigsudo-1.1.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ef372a72efa8e8a33aca28811f1cb1bba9c0d506823664bdc941300a6aa99e55 |
|
MD5 | 5dec901897449cba9c96fac83dc82e64 |
|
BLAKE2b-256 | bf509c51b70dd25fd279bb0d2e1a66c27adc14032ba83d558706fbf7b606ccc6 |