diff options
| author | Thomas Wiest <twiest@redhat.com> | 2015-12-09 15:48:15 -0500 | 
|---|---|---|
| committer | Thomas Wiest <twiest@redhat.com> | 2015-12-09 15:48:15 -0500 | 
| commit | 14c69ad397be8ee101ef5b4edfa223d703e67ad0 (patch) | |
| tree | 70eee046db8012061c178ab4e686650048265564 /playbooks/aws | |
| parent | 898290cb3aabbc9d98883181877ac857a2fe1faf (diff) | |
| parent | b7b3e6dbdfd17e55055630ce963965818e830620 (diff) | |
| download | openshift-14c69ad397be8ee101ef5b4edfa223d703e67ad0.tar.gz openshift-14c69ad397be8ee101ef5b4edfa223d703e67ad0.tar.bz2 openshift-14c69ad397be8ee101ef5b4edfa223d703e67ad0.tar.xz openshift-14c69ad397be8ee101ef5b4edfa223d703e67ad0.zip | |
Merge remote-tracking branch 'upstream/master' into prod
Diffstat (limited to 'playbooks/aws')
5 files changed, 140 insertions, 12 deletions
| diff --git a/playbooks/aws/openshift-cluster/addNodes.yml b/playbooks/aws/openshift-cluster/addNodes.yml new file mode 100644 index 000000000..fff3e401b --- /dev/null +++ b/playbooks/aws/openshift-cluster/addNodes.yml @@ -0,0 +1,39 @@ +--- +- name: Launch instance(s) +  hosts: localhost +  connection: local +  gather_facts: no +  vars_files: +  - vars.yml +  - ["vars.{{ deployment_type }}.{{ cluster_id }}.yml", vars.defaults.yml] +  vars: +    oo_extend_env: True +  tasks: +  - fail: +      msg: Deployment type not supported for aws provider yet +    when: deployment_type == 'enterprise' + +  - include: ../../common/openshift-cluster/tasks/set_node_launch_facts.yml +    vars: +      type: "compute" +      count: "{{ num_nodes }}" +  - include: tasks/launch_instances.yml +    vars: +      instances: "{{ node_names }}" +      cluster: "{{ cluster_id }}" +      type: "{{ k8s_type }}" +      g_sub_host_type: "{{ sub_host_type }}" + +  - include: ../../common/openshift-cluster/tasks/set_node_launch_facts.yml +    vars: +      type: "infra" +      count: "{{ num_infra }}" +  - include: tasks/launch_instances.yml +    vars: +      instances: "{{ node_names }}" +      cluster: "{{ cluster_id }}" +      type: "{{ k8s_type }}" +      g_sub_host_type: "{{ sub_host_type }}" + +- include: scaleup.yml +- include: list.yml diff --git a/playbooks/aws/openshift-cluster/scaleup.yml b/playbooks/aws/openshift-cluster/scaleup.yml new file mode 100644 index 000000000..4415700a3 --- /dev/null +++ b/playbooks/aws/openshift-cluster/scaleup.yml @@ -0,0 +1,34 @@ +--- + +- hosts: localhost +  gather_facts: no +  vars_files: +  - vars.yml +  tasks: +  - set_fact: +      g_ssh_user_tmp: "{{ deployment_vars[deployment_type].ssh_user }}" +      g_sudo_tmp: "{{ deployment_vars[deployment_type].sudo }}" +  - name: Evaluate oo_hosts_to_update +    add_host: +      name: "{{ item }}" +      groups: oo_hosts_to_update +      ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}" +      ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}" +    with_items: "{{ groups.nodes_to_add }}" + +- include: ../../common/openshift-cluster/update_repos_and_packages.yml + +- include: ../../common/openshift-cluster/scaleup.yml +  vars: +    g_etcd_group: "{{ 'tag_env-host-type_' ~ cluster_id ~ '-openshift-etcd' }}" +    g_lb_group: "{{ 'tag_env-host-type_' ~ cluster_id ~ '-openshift-lb' }}" +    g_masters_group: "{{ 'tag_env-host-type_' ~ cluster_id ~ '-openshift-master' }}" +    g_new_nodes_group: 'nodes_to_add' +    g_ssh_user: "{{ hostvars.localhost.g_ssh_user_tmp }}" +    g_sudo: "{{ hostvars.localhost.g_sudo_tmp }}" +    g_nodeonmaster: true +    openshift_cluster_id: "{{ cluster_id }}" +    openshift_debug_level: 2 +    openshift_deployment_type: "{{ deployment_type }}" +    openshift_hostname: "{{ ec2_private_ip_address }}" +    openshift_public_hostname: "{{ ec2_ip_address }}" diff --git a/playbooks/aws/openshift-cluster/tasks/launch_instances.yml b/playbooks/aws/openshift-cluster/tasks/launch_instances.yml index 9c699120b..99f0577fc 100644 --- a/playbooks/aws/openshift-cluster/tasks/launch_instances.yml +++ b/playbooks/aws/openshift-cluster/tasks/launch_instances.yml @@ -20,10 +20,6 @@                     | default(deployment_vars[deployment_type].image, true) }}"    when: ec2_image is not defined and not ec2_image_name  - set_fact: -    ec2_instance_type: "{{ lookup('env', 'ec2_instance_type') -                    | default(deployment_vars[deployment_type].type, true) }}" -  when: ec2_instance_type is not defined -- set_fact:      ec2_keypair: "{{ lookup('env', 'ec2_keypair')                      | default(deployment_vars[deployment_type].keypair, true) }}"    when: ec2_keypair is not defined @@ -37,25 +33,25 @@    when: ec2_assign_public_ip is not defined  - set_fact: -    ec2_instance_type: "{{ ec2_master_instance_type | default(deployment_vars[deployment_type].type, true) }}" +    ec2_instance_type: "{{ ec2_master_instance_type | default(lookup('env', 'ec2_master_instance_type') | default(lookup('env', 'ec2_instance_type') | default(deployment_vars[deployment_type].type, true), true), true) }}"      ec2_security_groups: "{{ ec2_master_security_groups                      | default(deployment_vars[deployment_type].security_groups, true) }}"    when: host_type == "master" and sub_host_type == "default"  - set_fact: -    ec2_instance_type: "{{ ec2_etcd_instance_type | default(deployment_vars[deployment_type].type, true) }}" +    ec2_instance_type: "{{ ec2_etcd_instance_type | default(lookup('env', 'ec2_etcd_instance_type') | default(lookup('env', 'ec2_instance_type') | default(deployment_vars[deployment_type].type, true), true), true) }}"      ec2_security_groups: "{{ ec2_etcd_security_groups                      | default(deployment_vars[deployment_type].security_groups, true)}}"    when: host_type == "etcd" and sub_host_type == "default"  - set_fact: -    ec2_instance_type: "{{ ec2_infra_instance_type | default(deployment_vars[deployment_type].type, true) }}" +    ec2_instance_type: "{{ ec2_infra_instance_type | default(lookup('env', 'ec2_infra_instance_type') | default(lookup('env', 'ec2_instance_type') | default(deployment_vars[deployment_type].type, true), true), true) }}"      ec2_security_groups: "{{ ec2_infra_security_groups                      | default(deployment_vars[deployment_type].security_groups, true) }}"    when: host_type == "node" and sub_host_type == "infra"  - set_fact: -    ec2_instance_type: "{{ ec2_node_instance_type | default(deployment_vars[deployment_type].type, true) }}" +    ec2_instance_type: "{{ ec2_node_instance_type | default(lookup('env', 'ec2_node_instance_type') | default(lookup('env', 'ec2_instance_type') | default(deployment_vars[deployment_type].type, true), true), true) }}"      ec2_security_groups: "{{ ec2_node_security_groups                      | default(deployment_vars[deployment_type].security_groups, true) }}"    when: host_type == "node" and sub_host_type == "compute" @@ -81,7 +77,6 @@  - set_fact:      latest_ami: "{{ ami_result.results | oo_ami_selector(ec2_image_name) }}" -    user_data: "{{ lookup('template', '../templates/user_data.j2') }}"      volume_defs:        etcd:          root: @@ -97,6 +92,10 @@            volume_size: "{{ lookup('env', 'os_master_root_vol_size') | default(25, true) }}"            device_type: "{{ lookup('env', 'os_master_root_vol_type') | default('gp2', true) }}"            iops: "{{ lookup('env', 'os_master_root_vol_iops') | default(500, true) }}" +        docker: +          volume_size: "{{ lookup('env', 'os_docker_vol_size') | default(10, true) }}" +          device_type: "{{ lookup('env', 'os_docker_vol_type') | default('gp2', true) }}" +          iops: "{{ lookup('env', 'os_docker_vol_iops') | default(500, true) }}"        node:          root:            volume_size: "{{ lookup('env', 'os_node_root_vol_size') | default(85, true) }}" @@ -121,7 +120,7 @@      count: "{{ instances | length }}"      vpc_subnet_id: "{{ ec2_vpc_subnet | default(omit, true) }}"      assign_public_ip: "{{ ec2_assign_public_ip | default(omit, true) }}" -    user_data: "{{ user_data }}" +    user_data: "{{ lookup('template', '../templates/user_data.j2') }}"      wait: yes      instance_tags:        created-by: "{{ created_by }}" @@ -191,6 +190,22 @@    - instances    - ec2.instances +- name: Add new instances to nodes_to_add group if needed +  add_host: +    hostname: "{{ item.0 }}" +    ansible_ssh_host: "{{ item.1.dns_name }}" +    ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}" +    ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}" +    groups: nodes_to_add +    ec2_private_ip_address: "{{ item.1.private_ip }}" +    ec2_ip_address: "{{ item.1.public_ip }}" +    openshift_node_labels: "{{ node_label }}" +    logrotate_scripts: "{{ logrotate }}" +  with_together: +  - instances +  - ec2.instances +  when: oo_extend_env is defined and oo_extend_env | bool +  - name: Wait for ssh    wait_for: "port=22 host={{ item.dns_name }}"    with_items: ec2.instances diff --git a/playbooks/aws/openshift-cluster/templates/user_data.j2 b/playbooks/aws/openshift-cluster/templates/user_data.j2 index 82c2f4d57..3621a7d7d 100644 --- a/playbooks/aws/openshift-cluster/templates/user_data.j2 +++ b/playbooks/aws/openshift-cluster/templates/user_data.j2 @@ -1,5 +1,5 @@  #cloud-config -{% if type =='etcd' %} +{% if type == 'etcd' and 'etcd' in volume_defs[type] %}  cloud_config_modules:  - disk_setup  - mounts @@ -19,7 +19,7 @@ fs_setup:    partition: auto  {% endif %} -{% if type == 'node' %} +{% if type in ['node', 'master'] and 'docker' in volume_defs[type] %}  mounts:  - [ xvdb ]  - [ ephemeral0 ] @@ -43,3 +43,10 @@ growpart:  runcmd:  - xfs_growfs /var  {% endif %} + +{% if deployment_vars[deployment_type].sudo %} +- path: /etc/sudoers.d/99-{{ deployment_vars[deployment_type].ssh_user }}-cloud-init-requiretty +  permissions: 440 +  content: | +    Defaults:{{ deployment_vars[deployment_type].ssh_user }} !requiretty +{% endif %} diff --git a/playbooks/aws/openshift-cluster/upgrades/v3_0_to_v3_1/upgrade.yml b/playbooks/aws/openshift-cluster/upgrades/v3_0_to_v3_1/upgrade.yml new file mode 100644 index 000000000..8cad51b5e --- /dev/null +++ b/playbooks/aws/openshift-cluster/upgrades/v3_0_to_v3_1/upgrade.yml @@ -0,0 +1,33 @@ +--- +# This playbook upgrades an existing AWS cluster, leaving nodes untouched if used with an 'online' deployment type. +# Usage: +#  ansible-playbook playbooks/aws/openshift-cluster/upgrades/v3_0_to_v3_1/upgrade.yml -e deployment_type=online -e cluster_id=<cluster_id> +- hosts: localhost +  gather_facts: no +  vars_files: +  - ../../vars.yml +  - "../../vars.{{ deployment_type }}.{{ cluster_id }}.yml" + +  tasks: +  - set_fact: +      g_ssh_user_tmp: "{{ deployment_vars[deployment_type].ssh_user }}" +      g_sudo_tmp: "{{ deployment_vars[deployment_type].sudo }}" + +  - set_fact: +      tmp_nodes_group: "{{ 'tag_env-host-type_' ~ cluster_id ~ '-openshift-node' }}" +    when: deployment_type != 'online' + +- include: ../../../../common/openshift-cluster/upgrades/v3_0_to_v3_1/upgrade.yml +  vars: +    g_etcd_group: "{{ 'tag_env-host-type_' ~ cluster_id ~ '-openshift-etcd' }}" +    g_lb_group: "{{ 'tag_env-host-type_' ~ cluster_id ~ '-openshift-lb' }}" +    g_masters_group: "{{ 'tag_env-host-type_' ~ cluster_id ~ '-openshift-master' }}" +    g_nodes_group: "{{ tmp_nodes_group | default('') }}" +    g_ssh_user: "{{ hostvars.localhost.g_ssh_user_tmp }}" +    g_sudo: "{{ hostvars.localhost.g_sudo_tmp }}" +    g_nodeonmaster: true +    openshift_cluster_id: "{{ cluster_id }}" +    openshift_debug_level: 2 +    openshift_deployment_type: "{{ deployment_type }}" +    openshift_hostname: "{{ ec2_private_ip_address }}" +    openshift_public_hostname: "{{ ec2_ip_address }}" | 
