|
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()[0]
name=i.strip().split()[1]
if not group in inventory:
inventory[group] = {
'hosts': []
}
inventory[group]['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[1] == '--list'):
grouplist()
elif len(sys.argv) == 3 and (sys.argv[1] == '--host'):
hostinfo(sys.argv[2])
else:
print "Usage: %s --list or --host <hostname>" % sys.argv[0]
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
[root@jk tasks]# ls
main v1.yml main.yml
[root@jk tasks]# 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.cfg owner=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 |
|
|
|
|
|
|