AWS Cloud Provider for Idem
项目描述
AWS Cloud Provider for Idem.
关于
idem-aws 帮助使用 idem 管理AWS。
什么是POP?
本项目使用 pop 构建,pop 是基于 Python 的 面向插件编程 (POP) 实现。POP 旨在以新的方式将计算机历史中的概念和智慧结合在一起,以解决现代计算问题。
更多信息
什么是 Idem?
本项目使用 idem 构建,idem 是一种用 Python 编写的幂等、命令式执行的声明式编程语言。本项目扩展了 idem!
更多信息
入门
先决条件
Python 3.8+
git (如果从源代码安装或为项目做出贡献)
Idem
安装
您可以从 PyPI、源存储库或本地目录安装 idem-aws。
在安装 idem-aws 之前,请确保您位于与您的 pyproject.toml 文件相同的目录中。您还可以通过使用 --directory=DIRECTORY (-C) 选项来指定包含您的 pyproject.toml 文件的目录。
从 PyPI 安装
要从 PyPI 安装 idem-aws,请运行以下命令
poetry add idem-aws
从源代码安装
您还可以直接从源存储库安装 idem-aws。
poetry add git+https://gitlab.com/vmware/idem/idem-aws.git
如果您没有指定分支,Poetry 将使用 master 分支上的最新提交。
从本地目录安装
克隆 idem-aws 存储库。然后运行以下命令从克隆的目录安装
poetry add ~/path/to/idem-aws
设置
安装完成后,AWS Idem 提供程序的执行和状态模块将可用于 pop hub。为了使用它们,我们需要设置我们的凭证。
创建一个名为 credentials.yaml 的新文件,并用凭证填充它。如果您正在使用 localstack,则 id 和 key 可以是无效值。默认配置文件将由 idem 自动选择。
aws 提供程序/配置文件可以存储在多种方式中。有关更多信息,请参阅 acct backends。
idem-aws 有多个认证后端,每个后端都有其独特的参数集。以下示例显示了可以在这些后端中使用的一些参数,以定义配置文件。所有后端最终都会在底层创建一个 boto3 会话,并将其存储在传递给所有 idem exec 和 state 函数的 ctx 变量中。
所有身份验证后端都支持两个可选参数,即 endpoint_url 和 provider_tag_key。endpoint url 用于指定 boto3 调用的替代目标,例如 localstack 服务器或自定义 dynamodb 服务器。provider_tag_key 在创建新资源时使用。idem-aws 只会与标记有可自定义的 provider_tag_key 键的资源进行交互。
credentials.yaml
aws:
default:
endpoint_url: http://localhost:4566
use_ssl: False
aws_access_key_id: localstack
aws_secret_access_key: _
region_name: us-west-1
您还可以使用 Idem 与 aws_session_token 一起使用,以获取临时安全凭证。
aws:
default:
endpoint_url: http://localhost:4566
use_ssl: False
aws_access_key_id: localstack
aws_secret_access_key: _
region_name: us-west-1
aws_session_token: my_token
此外,您还可以使用 Idem 与 AWS AssumeRole。
aws:
default:
endpoint_url: http://localhost:4566
use_ssl: False
aws_access_key_id: localstack
aws_secret_access_key: _
region_name: us-west-1
assume_role:
role_arn: arn:aws:iam::999999999999999:role/xacct/developer
role_session_name: IdemSessionName
如果 acct 配置文件中没有指定 region_name,它可以从 idem 配置文件中的 acct.extras 中获取。
# idem.cfg
acct:
extras:
aws:
region_name: us-west-1
如果已安装,您还可以使用 aws-google-auth 进行身份验证。
aws.gsuite:
my-staging-env:
username: user@gmail.com
password: this_is_available_but_avoid_it
role_arn: arn:aws:iam::999999999999999:role/xacct/developer
idp_id: 9999999
sp_id: 999999999999
region: us-east-1
duration: 36000
account: developer
Google 配置文件示例的名称不是 default。要使用它,需要在 idem 状态中明确指定。
ensure_resource_exists:
aws.ec2.vpc.present:
- acct_profile: my-staging-env
- name: idem_aws_vpc
- cidr_block: 10.0.0.0/24
在执行状态时,也可以从命令行指定它。
idem state --acct-profile my-staging-env my_state.sls
在直接调用 exec 模块时,也可以从命令行指定它。
idem exec --acct-profile my-staging-env boto3.client.ec2.describe_vpcs
启动的最后一步是加密凭证文件,并将加密密钥和加密文件路径添加到 ENVIRONMENT 中。
acct 命令应作为 acct 可用,因为它是 idem 和 idem-aws 的必需项。加密凭证文件。
acct encrypt credentials.yaml
输出
-A9ZkiCSOjWYG_lbGmmkVh4jKLFDyOFH4e4S1HNtNwI=
将这些添加到您的环境中
export ACCT_KEY="-A9ZkiCSOjWYG_lbGmmkVh4jKLFDyOFH4e4S1HNtNwI="
export ACCT_FILE=$PWD/credentials.yaml.fernet
如果没有提供 acct_file,则将使用 botocore 捕获的默认 awscli 凭据。缺少的 CLI 选项将由 botocore 从 awscli 配置中填充。配置优先级顺序为:
acct 配置文件
idem 配置文件
awscli 配置
您现在可以使用 idem-aws 了!
执行模块
一旦一切设置正确,就可以通过 idem 直接调用执行模块。执行模块反映了 boto3.client 和 boto3.resource 模块的命名空间,并具有相同的参数。
例如,这是您可以使用 idem 从命令行列出 Vpc 的方式:
idem exec boto3.client.ec2.describe_vpcs
您也可以指定参数。在 boto3 资源的情况下,args 将传递给资源构造函数,kwargs 将按如下方式传递给操作:
idem exec boto3.resource.ec2.Vpc.create_subnet vpc-71d00419 CidrBlock="10.0.0.0/24"
状态
状态也可以通过其相对位置在 idem-aws/idem_aws/states 中访问。例如,idem-aws/idem_aws/states/aws/ec2/vpc.py 包含一个函数 absent()。在我的状态文件中,我可以创建一个使用 absent 函数的状态,如下所示。
my_state.sls
idem_aws_test_vpc:
aws.ec2.vpc.absent:
- name: "idem_aws_test_vpc"
可以使用以下方式执行此状态:
idem state my_state.sls
idem state 还有一些标志可以显着提高运行的扩展性和性能。让我们使用这个新状态,它验证是否有 100 个 vpc 不存在。
{% for i in range(100) %}
idem_aws_test_vpc_{{i}}:
aws.ec2.vpc.absent:
- name: "idem_aws_test_vpc_{{i}}"
{% endfor -%}
可以通过 --runtime parallel 执行状态,以充分利用 idem 的异步执行调用。
idem state --runtime parallel my_state.sls
远程存储用于强制状态管理
idem-aws 支持 Idem 的强制状态管理功能的远程存储。也就是说,Idem 可以在 AWS S3 存储桶中存储 esm 数据。DynamoDB 将用作文件锁,以防止多个用户/进程同时访问相同的存储文件。要使用远程存储,需要在凭证配置文件中添加 esm 配置文件,如下所示:
aws:
default:
use_ssl: True
aws_access_key_id: AAAAAAAAA5CDFSDER3UQ
aws_secret_access_key: eHjPASFWERSFwVXKlsdfS4afD
region_name: eu-west-2
esm:
bucket: "idem-state-storage-bucket"
dynamodb_table: "idem-state-storage-table"
key: "/idem-state/demo-storage.json"
此esm文件表示Idem将使用AWS S3桶“idem-state-storage-bucket”和DynamoDB表“idem-state-storage-table”,位于eu-west-2区域。 “key”是esm数据将要读取和存储的文件路径。在使用此功能之前,需要先创建S3桶和DynamoDB表。DynamoDB表应以字符串“LockID”为主键,不包含其他内容。
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建分发
idem-aws-6.2.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 93dd08ecd0d48f5c16a8dfc5939e980a3f2aec1f9b747a548f7171a604493ef4 |
|
MD5 | 153c47fa649a5bdd319e0f8575c71ee0 |
|
BLAKE2b-256 | 9eec0e1a3b1641f5c1a0c7efc87beb782861798ccd2ef670abac39cb3fc9232b |
idem_aws-6.2.1-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4965ed3f7195b937fd8782c52c83075b2bec7d090c51550a536065bf02c0eed5 |
|
MD5 | fab38ede21734b7f1a323830b0384896 |
|
BLAKE2b-256 | 4302b69ce838e2118970d6089f7f22c6a88e761ea787d442343d9b8b4609547d |