跳转到主要内容

下流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 (10.6 kB 查看哈希值)

上传时间 源代码

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面