Amazon web services 如何使用AWS实例&x27;在ansible playbook中动态设置IP地址,而不使用ansible playbook将其保存在外部文件中
我有两个集群,一个是卡桑德拉集群(4节点集群),另一个是卡夫卡集群(3节点集群)。我有一个在AWS实例上部署我的微服务的playbook,对于该微服务playbook,我维护了一个清单文件,该文件将我的cassandra/kafka主机的IP地址存储在一个变量中,如下所示:Amazon web services 如何使用AWS实例&x27;在ansible playbook中动态设置IP地址,而不使用ansible playbook将其保存在外部文件中,amazon-web-services,jenkins,ansible,microservices,Amazon Web Services,Jenkins,Ansible,Microservices,我有两个集群,一个是卡桑德拉集群(4节点集群),另一个是卡夫卡集群(3节点集群)。我有一个在AWS实例上部署我的微服务的playbook,对于该微服务playbook,我维护了一个清单文件,该文件将我的cassandra/kafka主机的IP地址存储在一个变量中,如下所示: cassandra_hosts = 'X.X.X.X:9042,X.X.X.X:9042,X.X.X.X:9042,X.X.X.X:9042' kafka_host = 'X.X.X.X:9092,X.X.X.X:9092,
cassandra_hosts = 'X.X.X.X:9042,X.X.X.X:9042,X.X.X.X:9042,X.X.X.X:9042'
kafka_host = 'X.X.X.X:9092,X.X.X.X:9092,X.X.X.X:9092,X.X.X.X:9092'
- hosts: dynamic_hosts
become: yes
become_user: xxxxxx
become_method: sudo
vars:
ansible_connection: "{{ connection_type }}"
ansible_ssh_user: "{{ ssh_user_name }}"
ansible_ssh_private_key_file: "{{ ssh_private_key_file }}"
tasks:
- name: Register Service as an Upstart
shell: chdir="{{dest_location}}" "./{{upstartscript}}.sh" " -p {{service_port}} -u {{service_uri}} -v {{service_version}} -c {{cassandra_hosts}} -k {{kafka_host}} -l {{log_level}}"
register: escript
- name: Register Service as an Upstart Output
debug:
msg : "{{ escript.stdout }}"
||| Outputs
|||
||+---------------------------+-----------------+---------------------------
----------------------------------------------------+||
||| Description | OutputKey |
OutputValue |||
||+---------------------------+-----------------+---------------------------
----------------------------------------------------+||
||| IP of Primary Seed Node | ZookeeperLink |
X.X.X.X:2181,X.X.X.X:2181,X.X.X.X:2181,X.X.X.X:2181
|||
||| IP of Primary Seed Node | Node2DNSName | ip-X-X-X-
X.ec2.internal |||
||| IP of Primary Seed Node | KafkaLink |
X.X.X.X:9092,X.X.X.X:9092,X.X.X.X:9092,X.X.X.X:9092
|||
||| IP of Primary Seed Node | Node3DNSName | ip-X-X-X-
X.ec2.internal |||
||| IP of Primary Seed Node | Node4DNSName | ip-X-X-X-
X.ec2.internal |||
||| IP of Primary Seed Node | Node1DNSName | ip-X-X-X-
X.ec2.internal
microservice剧本大致如下:
cassandra_hosts = 'X.X.X.X:9042,X.X.X.X:9042,X.X.X.X:9042,X.X.X.X:9042'
kafka_host = 'X.X.X.X:9092,X.X.X.X:9092,X.X.X.X:9092,X.X.X.X:9092'
- hosts: dynamic_hosts
become: yes
become_user: xxxxxx
become_method: sudo
vars:
ansible_connection: "{{ connection_type }}"
ansible_ssh_user: "{{ ssh_user_name }}"
ansible_ssh_private_key_file: "{{ ssh_private_key_file }}"
tasks:
- name: Register Service as an Upstart
shell: chdir="{{dest_location}}" "./{{upstartscript}}.sh" " -p {{service_port}} -u {{service_uri}} -v {{service_version}} -c {{cassandra_hosts}} -k {{kafka_host}} -l {{log_level}}"
register: escript
- name: Register Service as an Upstart Output
debug:
msg : "{{ escript.stdout }}"
||| Outputs
|||
||+---------------------------+-----------------+---------------------------
----------------------------------------------------+||
||| Description | OutputKey |
OutputValue |||
||+---------------------------+-----------------+---------------------------
----------------------------------------------------+||
||| IP of Primary Seed Node | ZookeeperLink |
X.X.X.X:2181,X.X.X.X:2181,X.X.X.X:2181,X.X.X.X:2181
|||
||| IP of Primary Seed Node | Node2DNSName | ip-X-X-X-
X.ec2.internal |||
||| IP of Primary Seed Node | KafkaLink |
X.X.X.X:9092,X.X.X.X:9092,X.X.X.X:9092,X.X.X.X:9092
|||
||| IP of Primary Seed Node | Node3DNSName | ip-X-X-X-
X.ec2.internal |||
||| IP of Primary Seed Node | Node4DNSName | ip-X-X-X-
X.ec2.internal |||
||| IP of Primary Seed Node | Node1DNSName | ip-X-X-X-
X.ec2.internal
上面的代码是我检索我在清单文件中硬编码的IP地址的方式(在代码的第一部分中提到)
我试图实现的是,如何在playbook中动态存储AWS实例的IP地址,并在microservices playbook中使用它,而不将IP地址存储在清单文件中,有什么建议吗
另外,如果需要的话,我请求你提出任何问题,这是我在这里的第一个问题,提前谢谢
嗨,
我还需要获取kafka集群的输出,但是kafka集群在AWS控制台中以不同的方式输出它,如下所示:
cassandra_hosts = 'X.X.X.X:9042,X.X.X.X:9042,X.X.X.X:9042,X.X.X.X:9042'
kafka_host = 'X.X.X.X:9092,X.X.X.X:9092,X.X.X.X:9092,X.X.X.X:9092'
- hosts: dynamic_hosts
become: yes
become_user: xxxxxx
become_method: sudo
vars:
ansible_connection: "{{ connection_type }}"
ansible_ssh_user: "{{ ssh_user_name }}"
ansible_ssh_private_key_file: "{{ ssh_private_key_file }}"
tasks:
- name: Register Service as an Upstart
shell: chdir="{{dest_location}}" "./{{upstartscript}}.sh" " -p {{service_port}} -u {{service_uri}} -v {{service_version}} -c {{cassandra_hosts}} -k {{kafka_host}} -l {{log_level}}"
register: escript
- name: Register Service as an Upstart Output
debug:
msg : "{{ escript.stdout }}"
||| Outputs
|||
||+---------------------------+-----------------+---------------------------
----------------------------------------------------+||
||| Description | OutputKey |
OutputValue |||
||+---------------------------+-----------------+---------------------------
----------------------------------------------------+||
||| IP of Primary Seed Node | ZookeeperLink |
X.X.X.X:2181,X.X.X.X:2181,X.X.X.X:2181,X.X.X.X:2181
|||
||| IP of Primary Seed Node | Node2DNSName | ip-X-X-X-
X.ec2.internal |||
||| IP of Primary Seed Node | KafkaLink |
X.X.X.X:9092,X.X.X.X:9092,X.X.X.X:9092,X.X.X.X:9092
|||
||| IP of Primary Seed Node | Node3DNSName | ip-X-X-X-
X.ec2.internal |||
||| IP of Primary Seed Node | Node4DNSName | ip-X-X-X-
X.ec2.internal |||
||| IP of Primary Seed Node | Node1DNSName | ip-X-X-X-
X.ec2.internal
我只想输出卡夫卡林克角色的IP,有什么帮助吗:
X.X.X.X:9092,X.X.X.X:9092,X.X.X.X:9092,X.X.X.X:9092
我尝试了以下命令,但它不起作用:
aws cloudformation describe-stacks --stack-name IngKafkaCluster --query 'Stacks[].Outputs[].OutputValue' --output text
我在上面的命令上得到以下输出,这没有错,但不完全是我想要的:
X.X.X.X:2181,X.X.X.X:2181,X.X.X.X:2181,X.X.X.X:2181 ip-X-X-X-X.ec2.internal X.X.X.X:9092,X.X.X.X:9092,X.X.X.X:9092,X.X.X.X:9092 ip-X-X-X-X.ec2.internal ip-X-X-X-X.ec2.internal ip-X-X-X-X.ec2.internal
要获取AWS EC2的Ip地址,您可以尝试以下命令,该命令将AWS输出提取到所需的文件中:
aws cloudformation describe-stacks --stack-name IngCassandraCluster --query 'Stacks[].Outputs[].OutputValue' --output text --> kunaltest.text
您可以在playbook中的以下位置添加这一行:shell:“让它做您想做的事。要获取AWS EC2的Ip地址,您可以尝试以下命令,该命令将AWS输出提取到您想要的文件中:
aws cloudformation describe-stacks --stack-name IngCassandraCluster --query 'Stacks[].Outputs[].OutputValue' --output text --> kunaltest.text
你可以在剧本中添加以下内容:shell:“让它做你想做的事。我已经编辑了问题的范围,你能为我讲解卡夫卡部分吗?我已经编辑了问题的范围,你能为我讲解卡夫卡部分吗?