ifuleyou 发表于 2018-7-29 12:05:36

ansible安装zookeeper

cat iphost.txt  
n16 172.x.x.1
  
d17 172.x.x.2
  
d18 172.x.x.3
  

  
cd /etc/ansible/shell
  
cat iphost.py
  
#!/usr/bin/python
  
# coding:utf-8
  
import sys
  

  
try:
  
    import json
  
except ImportError:
  
    import simplejson as json
  

  
def grouplist():
  
    inventory = {}
  
    #inventory['local'] = []
  
    sfile='/etc/ansible/shell/iphost.txt'
  
    with open(sfile,'rb') as f:
  
      for i in f.readlines():
  
            group=i.strip().split()
  
            name=i.strip().split()
  
            if not group in inventory:
  
                inventory = {
  
                  'hosts': []
  
                }
  
            inventory['hosts'].append(name)
  

  
      print json.dumps(inventory, indent=4)
  

  

  
def hostinfo(name):
  
    vars = {}
  
    vars = {
  
      'admin': 'Jane Jolie',
  
      'datacenter': 1
  
    }
  
    print json.dumps(vars, indent=4)
  

  
if __name__ == '__main__':
  
    if len(sys.argv) == 2 and (sys.argv == '--list'):
  
      grouplist()
  
    elif len(sys.argv) == 3 and (sys.argv == '--host'):
  
      hostinfo(sys.argv)
  
    else:
  
      print "Usage: %s --list or --host <hostname>" % sys.argv
  
      sys.exit(1)
  

  
cd /etc/ansible/zookeeper
  
tree
  
.
  
├── hosts
  
├── roles
  
│   └── http
  
│       ├── default
  
│       ├── files
  
│       │   ├── java.env
  
│       │   └── zookeeper.tar.gz
  
│       ├── handlers
  
│       ├── meta
  
│       │   └── test
  
│       ├── tasks
  
│       │   ├── main v1.yml
  
│       │   └── main.yml
  
│       ├── templates
  
│       │   └── zoo.cfg
  
│       └── vars
  
│         └── main.yml
  
└── site.yml
  

  
cd /etc/ansible/zookeeper/roles/http/tasks
  
# ls
  
main v1.ymlmain.yml
  
# cat main.yml
  
- name: Stop zookeeper
  
shell: ps -ef|grep zookeeper|grep -v grep|awk '{print $2}'|xargs kill -9 >>/dev/null 2>&1
  
ignore_errors: yes
  
- name: Copy zookeeper
  
copy: src=zookeeper.tar.gz dest=/tmp/zookeeper.tar.gz owner=hadoop group=hadoop
  
- name: Uncompression
  
shell: tar zxf /tmp/zookeeper.tar.gz -C /home/hadoop/&& rm -rf /tmp/zookeeper.tar.gz
  
- name: Copy env
  
copy: src=java.env dest=/home/hadoop/zookeeper/conf/java.env owner=hadoop group=hadoop
  
- name: mkdir
  
shell: mkdir /home/hadoop/zookeeper/data&&mkdir /home/hadoop/zookeeper/datalog/
  
ignore_errors: yes
  
- name: Copy zoo.cfg
  
template: src=zoo.cfg dest=/home/hadoop/zookeeper/conf/zoo.cfgowner=hadoop group=hadoop mode=0755
  
- name: echo myid
  
shell: echo {{ myid }} > /home/hadoop/zookeeper/data/myid
  
- name: chown
  
shell: chown -R hadoop.hadoop /home/hadoop/zookeeper
  
- name: Start zookeeper Service
  
shell: sudo -i -u hadoop nohup sh /home/hadoop/zookeeper/bin/zkServer.sh start &
  
- name: wc
  
shell: cat /etc/rc.d/rc.local|grep zkServer|wc -l
  
register: zookeepers
  
ignore_errors: True
  
- name: Add Boot Start zookeeper Service
  
shell: echo "sudo -i -u hadoop nohup sh /home/hadoop/zookeeper/bin/zkServer.sh start &" >>/etc/rc.d/rc.local
  
when: zookeepers.stdout|int == 0
  

  
cd /etc/ansible/zookeeper/roles/http/vars
  
cat main.yml
  
ip1: 172.x.x.1
  
ip2: 172.x.x.2
  
ip3: 172.x.x.3
  

  
安装
  
ansible-playbook -i /etc/ansible/shell/iphost.py site.yml --extra-vars "myid=1 host=n16"
  
ansible-playbook -i /etc/ansible/shell/iphost.py site.yml --extra-vars "myid=2 host=d17"
  
ansible-playbook -i /etc/ansible/shell/iphost.py site.yml --extra-vars "myid=3 host=d18"
  

  
用ansible的shell sudo -i -u hadoop /home/hadoop/zookeeper/bin/zkServer.sh start
  
启动zkServer
页: [1]
查看完整版本: ansible安装zookeeper