安装过程其实并不复杂,只不过出现的问题,遇到的问题比较多,也主要参考网上https://github.com/alaxli/ansible_ui/issues/15 中提到的方法,只不过我遇到本身的问题,此处记录一下
一 首先环境是centos6.9 minalpython
二 配置epel ,编辑文件 /etc/yum.repos.d/epel.repo ,内容为mysql
[epel] name=epel mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-$releasever&arch=$basearch enabled=1 gpgcheck=0
三 准备CentOS环境c++
yum update && yum upgrade
四 控制服务器与被管理服务器要求git
Master:Python 2.6+
Slave:Python 2.4+,最好也是2.6+(CentOS 6.9自带)
五 安装ansible :github
yum install ansible (若是提示没有此安装包,能够加入EPEL扩展包:yum install epel-release)sql
六 生成公钥和秘钥数据库
使用命令ssh-keygen -t rsa 生成公钥私钥django
七 安装相关库json
yum install -y gcc gcc-c++ yum install -y git yum install -y openldap-devel yum install -y python-devel yum install -y libffi-devel yum install -y openssl-devel yum install -y libjpeg-devel yum install -y zlib-devel yum install -y python-setuptools yum install -y mysql-devel yum install -y sshpass
八 pip,setuptools, 地址: https://bootstrap.pypa.io/
a. 下载get-pip.py
b. python get-pip.py
c. pip -V,显示安装成功 bootstrap
九 下载 2.7版本的python
a. 下载python2.7.x 源码并上传至/home/ansible/python2.7 具体小版本我用x表示了。。
b. tar -xf Python-2.7.x.tgz
c. cd Python-2.7.x
d. ./configure --prefix=/usr/local
e. make && make install
f. cd /usr/local/bin/
g. ./python -V, 显示 Python 2.7.x
十 使用virtualenv建立python2.7沙盒环境
a. pip install virtualenv
b. cd /home/ansible
c. mkdir env
d. virtualenv --python=python2.7 --no-site-packages env/
e. source ./env/bin/activate
f. deactivate
十一 安装ansible_ui 及数据库配置
1 获取 ansible_ui :
a. cd /home/ansible/
b. git clone https://github.com/alaxli/ansible_ui.git
2 启动 env环境
a. cd /home/ansible/
b. source ./env/bin/activate
3 安装ansible_ui (--使用pip 安装的时候不要使用sudo,不然会切换到python2.6的pip安装, 会致使安装过程当中出现不少问题)
pip install setuptools_scm
pip install -r requirements.txt (请看下面特别说明)
pip install Pillow
pip install ansible
特别说明,安装包提供的requirements.txt 没有提供具体的版本,所以即便运行成功后,后面数据库也没法配置成功,此处贴出我可用的 requirements.txt 替换便可
amqp==1.4.9 ansible==2.2.0.0 anyjson==0.3.3 billiard==3.3.0.23 celery==3.1.25 cffi==1.9.1 cryptography==1.7.1 Django==1.6 django-auth-ldap==1.2.8 django-celery==3.1.16 django-crispy-forms==1.4.0 django-guardian==1.3 django-jsonfield==1.0.1 django-multisite==1.3.1 django-widget-tweaks==1.4.1 enum34==1.1.6 idna==2.2 ipaddress==1.0.17 Jinja2==2.9.4 kombu==3.0.37 MarkupSafe==0.23 meld3==1.0.2 mongoengine==0.9.0 MySQL-python==1.2.5 olefile==0.44 paramiko==2.1.1 pexpect==4.2.1 Pillow==4.0.0 ptyprocess==0.5.1 pyasn1==0.1.9 pycparser==2.17 pycrypto==2.6.1 pymongo==3.4.0 python-ldap==2.4.28 python-magic==0.4.12 pytz==2016.10 PyYAML==3.12 requests==2.12.4 requests-file==1.4.1 simplejson==3.10.0 six==1.10.0 South==1.0.2 supervisor==3.3.1 threadpool==1.3.2 tldextract==2.0.2 uWSGI==2.0.14 vine==1.1.3
4 配置数数据库及play-book路径
import os.path # LDAP settings NT4_DOMAIN = "" LDAP_URL = "ldap://ldapserver:port" BIND_USER = "CN=adreader,OU=xxx,OU=xxx,DC=xxx,DC=xxxx" BIND_PASSWORD = "*****" SEARCH_DN = "ou=xxxx,dc=xxxx,dc=xxxx" # Database settings DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 'NAME': 'ansible', # Or path to database file if using sqlite3. 'USER': 'ansibleuser', # Not used with sqlite3. 'PASSWORD': '123456', # Not used with sqlite3. 'HOST': '127.0.0.1', 'PORT': '3306', # Set to empty string for default. Not used with sqlite3. }, } # Mail settings MAIL_SENDER = "sender@domain.com" MAIL_SMTP = "mail.domain.com" # Ansible-playbook path ANSIBLE_PLAYBOOK = '/home/ansible/env/bin/ansible-playbook' #特别说明,网上版本流传的安装教程,此处有问题,此处指定是virtualenv环境下playbook的路径
5 初始化数据库
在mysql 数据库中添加 ansible
$ mysql -u root -p
mysql> create database ansible CHARACTER SET utf8;
***如下命令执行过程当中,会要求你设置一个superuser和密码,请记录下此用户名和密码,此用户名和密码就是登陆ansible_ui的超级用户
python manage.py schemamigration desktop.apps.account --init python manage.py schemamigration desktop.apps.ansible --init python manage.py syncdb python manage.py migrate ansible python manage.py migrate account python manage.py migrate kombu.transport.django python manage.py migrate djcelery python manage.py migrate guardian
这里可能遇到的问题有
a 若是你在上一步配置的数据库不是本地的数据库,可能出现版本不一致,致使数据库安装失败
b 你上一步的数据库地址、用户名、密码不正确
c 你上一步设置的数据库,无法链接到,无法链接到缘由不少
c.1 有多是远程的mysql 3306的端口,没有被打开,能够在 /etc/sysconfig/iptables 文件中添加 -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT ,记得重启iptables服务
c.2 有可能mysql没有开启远程链接 ,在mysql命令中 指向 grant all on ansible.* to ansibleuser@'%' identified by '123456';
6. 配置supervisord和ansible,在
a. 修改 /home/ansible/ansible_ui/celery-conf/supervisord.conf 中[program:ansible_celeryd] 部分里面的command为
command = /home/ansible/env/bin/python /home/ansible/ansible_ui/manage.py celeryd -B -l info
这里的 /home/ansible/env/bin/python 是个人虚拟环境python,/home/ansible/ansible_ui/manage.py 这个不用说,你应该懂
b. cp ansible-conf/ansible.cfg ~/.ansible.cfg
7. 启动 a. supervisord -c celery-conf/supervisord.conf b. python manage.py runserver 0.0.0.0:8000 #若是外网访问不到,有多是端口没有打开(在 /etc/sysconfig/iptables 文件中添加 -A INPUT -p tcp -m tcp --dport 8000 -j ACCEPT ,记得重启iptables服务)