Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services Ansible-从最新的现有快照创建RDS实例_Amazon Web Services_Ansible_Ansible 2.x_Rds_Ansible Facts - Fatal编程技术网

Amazon web services Ansible-从最新的现有快照创建RDS实例

Amazon web services Ansible-从最新的现有快照创建RDS实例,amazon-web-services,ansible,ansible-2.x,rds,ansible-facts,Amazon Web Services,Ansible,Ansible 2.x,Rds,Ansible Facts,ansible 2.7.8 我的目标是: 从另一个数据库的最新现有快照创建新的RDS数据库 我在()中发现了一个类似的问题,但是该解决方案需要创建一个新的快照。我想从已创建的最新快照恢复 这就是我到目前为止所做的。。。用于收集当前快照信息的播放。我正在使用rds\u snapshot\u facts模块() 它成功运行,下面是从上述播放返回的示例数据结构: "snapshots": [ { "allocated_storage": 500, "availa

ansible 2.7.8

我的目标是:

从另一个数据库的最新现有快照创建新的RDS数据库

我在()中发现了一个类似的问题,但是该解决方案需要创建一个新的快照。我想从已创建的最新快照恢复

这就是我到目前为止所做的。。。用于收集当前快照信息的播放。我正在使用
rds\u snapshot\u facts
模块()

它成功运行,下面是从上述播放返回的示例数据结构:

"snapshots": [
    {
        "allocated_storage": 500,
        "availability_zone": "us-east-1a",
        "db_instance_identifier": "pg-test-01",
        "db_snapshot_arn": "arn:aws:rds:us-east-1:111111111111111:snapshot:rds:pg-test-01-2019-03-01-06-22",
        "db_snapshot_identifier": "rds:pg-test-01-2019-03-01-06-22",
        "dbi_resource_id": "db-hidden",
        "encrypted": false,
        "engine": "postgres",
        "engine_version": "10.6",
        "iam_database_authentication_enabled": false,
        "instance_create_time": "2019-02-27T05:08:47.480000+00:00",
        "license_model": "postgresql-license",
        "master_username": "postgres",
        "option_group_name": "default:postgres-10",
        "percent_progress": 100,
        "port": 5432,
        "processor_features": [],
        "snapshot_create_time": "2019-03-01T06:22:58.771000+00:00",
        "snapshot_type": "automated",
        "status": "available",
        "storage_type": "gp2",
        "tags": {},
        "vpc_id": "vpc-hidden"
    },
    {
        "allocated_storage": 500,
        "availability_zone": "us-east-1a",
        "db_instance_identifier": "pg-test-01",
        "db_snapshot_arn": "arn:aws:rds:us-east-1:111111111111111:snapshot:rds:pg-test-01-2019-03-02-06-32",
        "db_snapshot_identifier": "rds:pg-test-01-2019-03-02-06-32",
        "dbi_resource_id": "db-hidden",
        "encrypted": false,
        "engine": "postgres",
        "engine_version": "10.6",
        "iam_database_authentication_enabled": false,
        "instance_create_time": "2019-02-27T05:08:47.480000+00:00",
        "license_model": "postgresql-license",
        "master_username": "postgres",
        "option_group_name": "default:postgres-10",
        "percent_progress": 100,
        "port": 5432,
        "processor_features": [],
        "snapshot_create_time": "2019-03-02T06:32:42.325000+00:00",
        "snapshot_type": "automated",
        "status": "available",
        "storage_type": "gp2",
        "tags": {},
        "vpc_id": "vpc-hidden"
    },
    {
        "allocated_storage": 500,
        "availability_zone": "us-east-1a",
        "db_instance_identifier": "pg-test-01",
        "db_snapshot_arn": "arn:aws:rds:us-east-1:111111111111111:snapshot:rds:pg-test-01-2019-03-03-06-33",
        "db_snapshot_identifier": "rds:pg-test-01-2019-03-03-06-33",
        "dbi_resource_id": "db-hidden",
        "encrypted": false,
        "engine": "postgres",
        "engine_version": "10.6",
        "iam_database_authentication_enabled": false,
        "instance_create_time": "2019-02-27T05:08:47.480000+00:00",
        "license_model": "postgresql-license",
        "master_username": "postgres",
        "option_group_name": "default:postgres-10",
        "percent_progress": 100,
        "port": 5432,
        "processor_features": [],
        "snapshot_create_time": "2019-03-03T06:33:06.463000+00:00",
        "snapshot_type": "automated",
        "status": "available",
        "storage_type": "gp2",
        "tags": {},
        "vpc_id": "vpc-hidden"
    },
    {
        "allocated_storage": 500,
        "availability_zone": "us-east-1a",
        "db_instance_identifier": "pg-test-01",
        "db_snapshot_arn": "arn:aws:rds:us-east-1:111111111111111:snapshot:rds:pg-test-01-2019-03-04-06-32",
        "db_snapshot_identifier": "rds:pg-test-01-2019-03-04-06-32",
        "dbi_resource_id": "db-hidden",
        "encrypted": false,
        "engine": "postgres",
        "engine_version": "10.6",
        "iam_database_authentication_enabled": false,
        "instance_create_time": "2019-02-27T05:08:47.480000+00:00",
        "license_model": "postgresql-license",
        "master_username": "postgres",
        "option_group_name": "default:postgres-10",
        "percent_progress": 100,
        "port": 5432,
        "processor_features": [],
        "snapshot_create_time": "2019-03-04T06:32:30.227000+00:00",
        "snapshot_type": "automated",
        "status": "available",
        "storage_type": "gp2",
        "tags": {},
        "vpc_id": "vpc-hidden"
    },
    {
        "allocated_storage": 500,
        "availability_zone": "us-east-1a",
        "db_instance_identifier": "pg-test-01",
        "db_snapshot_arn": "arn:aws:rds:us-east-1:111111111111111:snapshot:rds:pg-test-01-2019-03-05-06-32",
        "db_snapshot_identifier": "rds:pg-test-01-2019-03-05-06-32",
        "dbi_resource_id": "db-hidden",
        "encrypted": false,
        "engine": "postgres",
        "engine_version": "10.6",
        "iam_database_authentication_enabled": false,
        "instance_create_time": "2019-02-27T05:08:47.480000+00:00",
        "license_model": "postgresql-license",
        "master_username": "postgres",
        "option_group_name": "default:postgres-10",
        "percent_progress": 100,
        "port": 5432,
        "processor_features": [],
        "snapshot_create_time": "2019-03-05T06:32:57.880000+00:00",
        "snapshot_type": "automated",
        "status": "available",
        "storage_type": "gp2",
        "tags": {},
        "vpc_id": "vpc-hidden"
    },
    {
        "allocated_storage": 500,
        "availability_zone": "us-east-1a",
        "db_instance_identifier": "pg-test-01",
        "db_snapshot_arn": "arn:aws:rds:us-east-1:111111111111111:snapshot:snapshot-pg-test-01-2019-03-06-02-22",
        "db_snapshot_identifier": "snapshot-pg-test-01-2019-03-06-02-22",
        "dbi_resource_id": "db-hidden",
        "encrypted": false,
        "engine": "postgres",
        "engine_version": "10.6",
        "iam_database_authentication_enabled": false,
        "instance_create_time": "2019-02-27T05:08:47.480000+00:00",
        "license_model": "postgresql-license",
        "master_username": "postgres",
        "option_group_name": "default:postgres-10",
        "percent_progress": 100,
        "port": 5432,
        "processor_features": [],
        "snapshot_create_time": "2019-03-06T02:23:35.039000+00:00",
        "snapshot_type": "manual",
        "status": "available",
        "storage_type": "gp2",
        "tags": {},
        "vpc_id": "vpc-hidden"
    }
]
因此,有了上述信息,我想对其进行一些逻辑处理,并创建一个新的数据库

我已经知道如何从快照创建数据库:

  - name : Restore RDS from snapshot
    rds  :
      command           : restore
      instance_name     : "{{ new_db_name }}"
      snapshot          : "{{ snapshot_name }}"
      instance_type     : "db.t2.medium"
      subnet            : my_subnet_grp 
      wait              : yes
      wait_timeout      : 1600
      region             : "{{ region }}"
      aws_access_key: "{{ access_key }}"
      aws_secret_key: "{{ secret_key }}"
然而,在我的例子中,我希望变量
“{{snapshot\u name}}”
根据收集的事实动态填充

本质上,伪代码逻辑类似于:

db_snapshot_identifier where status=available and max(snapshot_create_time)

我真的不知道从哪里开始构建Ansible操作的逻辑,所以欢迎任何正确方向的帮助或指示-谢谢

Jinja2是您所需要的

使用
selectattr
过滤器仅选择可用快照

然后
sort
filter按
snapshot\u create\u time

最后,使用
last
过滤器选择最后一个结果,并在
rds
模块中使用该结果

网上有很多好消息


先生,你是最好的。谢谢你分享你的知识。
db_snapshot_identifier where status=available and max(snapshot_create_time)
- name : get snap facts
  rds_snapshot_facts  :
    db_instance_identifier: "{{ source_db_name }}"
    region        : "{{ region }}"
    aws_access_key: "{{ access_key }}"
    aws_secret_key: "{{ secret_key }}"
  register: snapshot_facts

- name: get latest snapshot facts
  set_fact:
    latest_snapshot: '{{ snapshot_facts.snapshots | 
                        selectattr("status", "equalto", "available") |
                        sort(attribute="snapshot_create_time") |
                        last }}'

- name : Restore RDS from snapshot
  rds  :
    command           : restore
    instance_name     : "{{ new_db_name }}"
    snapshot          : "{{ latest_snapshot.db_snapshot_identifier }}"
    instance_type     : "db.t2.medium"
    subnet            : my_subnet_grp 
    wait              : yes
    wait_timeout      : 1600
    region            : "{{ region }}"
    aws_access_key: "{{ access_key }}"
    aws_secret_key: "{{ secret_key }}"