Ansible Playbook示例
一个Ansible playbook 示例,用于将Greenplum数据库软件发行版本安装到将组成Greenplum数据库系统的主机上。
该Ansible playbook介绍了如何使用Ansible自动化地安装Greenplum数据库软件中描述的任务。
重要提示:本playbook 仅作为一个示例,用来说明如何使用诸如Ansible,Chef或Puppet之类的资源配置工具自动执行Greenplum数据库集群的配置和软件安装任务。Pivotal对Ansible或此示例中的playbook不提供支持服务。
该playbook 示例旨在与CentOS 7一起使用。 它创建gpadmin 用户、安装Greenplum数据库软件发行版本、将已安装软件的owner和group设置为 gpadmin,并为 gpadmin 用户设置Pam安全限制。
您可以修改脚本以使其与操作系统平台一起使用,和执行其他的主机配置任务。
以下是使用此Ansible playbook的步骤。
- 使用软件包管理器在控制节点上安装Ansible。请参阅Ansible文档 以获取安装帮助。
- 从控制节点到将构成Greenplum数据库集群的所有主机上,设置免密码SSH。您可以使用ssh-copy-id命令在集群中的每个主机上安装SSH公钥。或者,您的资源配置工具可能提供了更便捷的方式来在多个主机上安全地安装公钥。
- 通过创建一个包含组成您的Greenplum数据库集群的主机列表的文件,来创建Ansible库。例如:
可以编辑该文件,并与Greenplum数据库工具gpssh-exkeys 和 gpinitsystem 一起使用。mdw sdw1 sdw2 ...
- 将下面的playbook 代码,复制到Ansible控制节点上的文件 ansible-playbook.yml 。
- 编辑playbook 顶部的变量,例如 要创建的gpadmin 管理用户和密码,以及要安装的Greenplum数据库的版本。
- 运行playbook ,将要安装的软件包传递给 package_path 参数。
ansible-playbook ansible-playbook.yml -i hosts -e package_path=./greenplum-db-6.0.0-rhel7-x86_64.rpm
Ansible Playbook——CentOS 7的Greenplum数据库安装
---
- hosts: all
vars:
- version: "6.0.0"
- greenplum_admin_user: "gpadmin"
- greenplum_admin_password: "changeme"
# - package_path: passed via the command line with: -e package_path=./greenplum-db-6.0.0-rhel7-x86_64.rpm
remote_user: root
become: yes
become_method: sudo
connection: ssh
gather_facts: yes
tasks:
- name: create greenplum admin user
user:
name: "{{ greenplum_admin_user }}"
password: "{{ greenplum_admin_password | password_hash('sha512', 'DvkPtCtNH+UdbePZfm9muQ9pU') }}"
- name: copy package to host
copy:
src: "{{ package_path }}"
dest: /tmp
- name: install package
yum:
name: "/tmp/{{ package_path | basename }}"
state: present
- name: cleanup package file from host
file:
path: "/tmp/{{ package_path | basename }}"
state: absent
- name: find install directory
find:
paths: /usr/local
patterns: 'greenplum*'
file_type: directory
register: installed_dir
- name: change install directory ownership
file:
path: '{{ item.path }}'
owner: "{{ greenplum_admin_user }}"
group: "{{ greenplum_admin_user }}"
recurse: yes
with_items: "{{ installed_dir.files }}"
- name: update pam_limits
pam_limits:
domain: "{{ greenplum_admin_user }}"
limit_type: '-'
limit_item: "{{ item.key }}"
value: "{{ item.value }}"
with_dict:
nofile: 524288
nproc: 131072
- name: find installed greenplum version
shell: . /usr/local/greenplum-db/greenplum_path.sh && /usr/local/greenplum-db/bin/postgres --gp-version
register: postgres_gp_version
- name: fail if the correct greenplum version is not installed
fail:
msg: "Expected greenplum version {{ version }}, but found '{{ postgres_gp_version.stdout }}'"
when: "version is not defined or version not in postgres_gp_version.stdout"
当playbook 成功执行后,您可以继续创建数据存储区和初始化Greenplum数据库系统。
父主题: 安装和升级Greenplum