ansible安装及应用部署副本.docx
- 文档编号:6249265
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:15
- 大小:32.97KB
ansible安装及应用部署副本.docx
《ansible安装及应用部署副本.docx》由会员分享,可在线阅读,更多相关《ansible安装及应用部署副本.docx(15页珍藏版)》请在冰点文库上搜索。
ansible安装及应用部署副本
一、安装ansible
1.1安装方式1:
下载:
tarzxfansible
cdansible
pythonsetup.pyinstall
1.2安装方式2:
首先安装epel源:
rpm–ivhhttps:
//dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
安装ansible服务端:
yum install ansible–y
推荐yum方式,能自动解决一些依赖问题
1.3主机与组
Ansible可同时操作属于一个组的多台主机,组和主机之间的关系通过inventory文件配置.默认的文件路径为/etc/ansible/hosts
/etc/ansible/hosts文件的格式与windows的ini配置文件类似:
[webservers]
[dbservers]
方括号[]中是组名,用于对系统进行分类,便于对不同系统进行个别的管理.
一个系统可以属于不同的组,比如一台服务器可以同时属于webserver组和dbserver组.这时属于两个组的变量都可以为这台主机所用,至于变量的优先级关系将于以后的章节中讨论.
如果有主机的SSH端口不是标准的22端口,可在主机名之后加上端口号,用冒号分隔.SSH配置文件中列出的端口号不会在paramiko连接中使用,会在openssh连接中使用.端口号不是默认设置时,可明确的表示为:
:
5309
假设你有一些静态IP地址,希望设置一些别名,但不是在系统的host文件中设置,又或者你是通过隧道在连接,那么可以设置如下:
jumperansible_ssh_port=5555ansible_ssh_host=192.168.1.50
在这个例子中,通过“jumper”别名,会连接192.168.1.50:
5555.记住,这是通过inventory文件的特性功能设置的变量.一般而言,这不是设置变量(描述你的系统策略的变量)的最好方式
二、ansible的应用
1.创建相应的目录:
mkdir-p/ansible/roles/{nginx,mysql,tomcat,db,zabbix}/{defaults,files,handlers,meta,tasks,templates,vars}
2文件结构
[root@MSJTVL-MJSP-A35etc]#treeansible/
ansible/
├──ansible.cfg
├──hosts#配置主机相关信息
├──roles
│ ├──db
│ │ ├──defaults
│ │ ├──files
│ │ │ └──stu.sql#要导入的sql
│ │ ├──handlers
│ │ ├──meta
│ │ ├──tasks
│ │ │ └──main.yml#创建数据库和导入SQL
│ │ ├──templates
│ │ └──vars
│ ├──mysql
│ │ ├──defaults
│ │ ├──files
│ │ │ └──mysql_install.sh#mysql源码和安装脚本
│ │ ├──handlers
│ │ ├──meta
│ │ ├──tasks
│ │ │ └──main.yml #安装mysql
│ │ ├──templates
│ │ └──vars
│ ├──nginx
│ │ ├──default
│ │ ├──defaults
│ │ ├──files
│ │ │ ├──install_nginx.sh #nginx安装脚本
│ │ │ ├──nginx-1.10.0.tar.gz#nginx安装程序包
│ │ │ └──ngx_cache_purge-2.3.tar.gz
│ │ ├──handlers
│ │ ├──meta
│ │ ├──tasks
│ │ │ └──main.yml#安装nginx
│ │ ├──templates
│ │ │ └──nginx.conf#nginx配置文件
│ │ └──vars
│ ├──tomcat
│ │ ├──defaults
│ │ ├──files
│ │ ├──handlers
│ │ │ └──main.yml#安装后处理
│ │ ├──meta
│ │ ├──tasks
│ │ │ └──main.yml#安装tomcat
│ │ ├──templates
│ │ └──vars
│ └──zabbix
│ ├──defaults
│ ├──files
│ │ ├──install_zabbix.sh #安装zabbix客户端脚本
│ │ ├──zabbix-3.0.7.tar.gz#zabbix安装包
│ │ └──zabbix_agentd.conf#zabbix客户端配置文件
│ ├──handlers
│ ├──meta
│ ├──tasks
│ │ └──main.yml #安装zabbix
│ ├──templates
│ └──vars
├──web.retry
├──webservice.yml
└──web.yml#总的调用文件
各目录功能说明
3.解决“Aborting,targetusesselinuxbutpythonbindings(libselinux-python)aren'tinstalled!
”问题:
更新python库:
yum-yinstalllibselinux-python
4.playbooks&shell
/etc/ansible/web.yml
1
2
3
4
5
6
-hosts:
lzy
remote_user:
root
roles:
-nginx
-zabbix
-mysql
/etc/ansible/roles/db/tasks/main.yml
1
2
3
4
5
6
7
---
-name:
createdb
mysql_db:
name=studentstate=presentlogin_password=bingoclo123login_user=rootlogin_unix_socket=/data/mysql/data/mysql.sock
-name:
copysql file
copy:
src=stu.sqldest=/tmp
-name:
import sql
mysql_db:
name=studentstate=import target=/tmp/stu.sqllogin_password=bingoclo123login_user=rootlogin_unix_socket=/data/mysql/data/mysql.sock
/etc/ansible/roles/db/files/stu.sql
1
2
createtableprofile(namevarchar(20),agetinyint);
insertintoprofile(name,age)values('teddy',12);
/etc/ansible/roles/nginx/tasks/main.yml
1
2
3
4
5
6
7
8
-name:
copynginx_tar_gztoclient
copy:
src=/etc/ansible/roles/nginx/files/nginx-1.10.0.tar.gzdest=/tmp/nginx-1.10.0.tar.gz
-name:
copyinstall_shelltoclient
copy:
src=/etc/ansible/roles/nginx/files/install_nginx.shdest=/tmp/install_nginx.sh
-name:
copyngx_cache_purge-2.3.tar.gztoclient
copy:
src=/etc/ansible/roles/nginx/files/ngx_cache_purge-2.3.tar.gzdest=/tmp/ngx_cache_purge-2.3.tar.gz
-name:
install nginx
shell:
/bin/bash /tmp/install_nginx.sh
/etc/ansible/roles/nginx/files/install_nginx.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!
/bin/bash
#yum安装一些依赖的模块
#yum-yinstalllibselinux-python
yum-y install gcc zlibzlib-developensslopenssl-develpcrepcre-devel
yum-y install zlibzlib-developensslopenssl-develpcre-devel
#groupadd-rnginx
#useradd-s/sbin/nologin-gnginx-rnginx
cd /tmp
tar xfnginx-1.10.0.tar.gz
tar xfngx_cache_purge-2.3.tar.gz
cd nginx-1.10.0
mkdir -p /opt/nginx/server/sbin
mkdir -p /opt/nginx/server/lib
mkdir -p /opt/nginx/server/log
mkdir -p /opt/nginx/server/run
mkdir -p /opt/nginx/server/cache
mkdir -p /opt/nginx/server/conf
mkdir -p /opt/nginx/server/lib
mkdir -p /opt/nginx/cache
./configure \
--prefix=/opt/nginx/server \
--sbin-path=/opt/nginx/server/sbin/nginx \
--modules-path=/opt/nginx/server/lib/modules \
--conf-path=/opt/nginx/server/conf/nginx.conf\
--error-log-path=/opt/nginx/server/log/error.log\
--http-log-path=/opt/nginx/server/log/access.log\
--pid-path=/opt/nginx/server/run/nginx.pid\
--lock-path=/opt/nginx/server/run/nginx.lock\
--http-client-body-temp-path=/opt/nginx/server/cache/client_temp \
--http-proxy-temp-path=/opt/nginx/server/cache/proxy_temp \
--http-fastcgi-temp-path=/opt/nginx/server/cache/fastcgi_temp \
--http-uwsgi-temp-path=/opt/nginx/server/cache/uwsgi_temp \
--http-scgi-temp-path=/opt/nginx/server/cache/scgi_temp \
--user=nginx\
--group=nginx\
--with-http_ssl_module\
--with-http_realip_module\
--with-http_addition_module\
--with-http_sub_module\
--with-http_dav_module\
--with-http_flv_module\
--with-http_mp4_module\
--with-http_gunzip_module\
--with-http_gzip_static_module\
--with-http_random_index_module\
--with-http_secure_link_module\
--with-http_stub_status_module\
--with-http_auth_request_module\
--with-threads\
--with-stream\
--with-stream_ssl_module\
--with-http_slice_module\
--with-mail\
--with-mail_ssl_module\
--with-file-aio\
--with-http_v2_module\
--with-ipv6\
--add-module=/tmp/ngx_cache_purge-2.3
make && make install
chown -Rnginx:
nginx /opt/nginx
#sed "/^\s*index/iproxy_passhttp:
//localhost:
8080;"/etc/nginx/nginx.conf
/opt/nginx/server/sbin/nginx
#sed
/etc/ansible/roles/mysql/tasks/main.yml
1
2
3
4
5
6
-name:
copymysql_tar_gztoclient
copy:
src=mysql-5.6.27.tar.gzdest=/tmp/mysql-5.6.27.tar.gz
-name:
copyinstall_scripttoclient
copy:
src=mysql_install.shdest=/tmp/mysql_install.showner=rootgroup=rootmode=755
-name:
install mysql
shell:
/bin/bash /tmp/mysql_install.sh
etc/ansible/roles/tomcat/tasks/main.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
-name:
install java
yum:
name=java-1.7.0-openjdkstate=present
-name:
group
group:
name=tomcat
-name:
user
user:
name=tomcatgroup=tomcathome=/usr/tomcat
sudo:
True
-name:
copytomcat_tar_gz
copy:
src=apache-tomcat-7.0.65.tar.gzdest=/tmp/apache-tomcat-7.0.65.tar.gz
-name:
Extractarchive
command:
/bin/tar xf /tmp/apache-tomcat-7.0.65.tar.gz-C /opt/
-name:
Symlink install directory
file:
src=/opt/apache-tomcat-7.0.65/dest=/usr/share/tomcat state=link
-name:
ChangeownershipofTomcatinstallation
file:
path=/usr/share/tomcat/ owner=tomcatgroup=tomcatstate=directoryrecurse=yes
-name:
ConfigureTomcat users
template:
src=tomcat-users.xmldest=/usr/share/tomcat/conf/
notify:
restarttomcat
-name:
InstallTomcatinitscript
copy:
src=tomcat-initscript.shdest=/etc/init.d/tomcat mode=0755
-name:
StartTomcat
service:
name=tomcatstate=startedenabled=yes
etc/ansible/roles/tomcat/handlers/main.yml
1
2
-name:
restarttomcat
service:
name=tomcatstate=restarted
etc/ansible/roles/mysql/files/mysql_install.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!
/bin/bash
DBDIR='/data/mysql/data'
PASSWD='bingoclo123'
[-d$DBDIR]|| mkdir $DBDIR-p
yum install cmake make gcc-c++bison-develncurses-devel-y
id mysql&> /dev/null
if [$?
-ne 0];then
useradd mysql-s /sbin/nologin -M
fi
chown -Rmysql.mysql$DBDIR
cd /tmp/
tar xfmysql-5.6.27.tar.gz
cd mysql-5.6.27
cmake.-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=$DBDIR\
-DMYSQL_UNIX_ADDR=$DBDIR/mysql.sock\
-DDEFAULT_CHARSET=utf8\
-DEXTRA_CHARSETS=all\
-DENABLED_LOCAL_INFILE=1\
-DWITH_READLINE=1\
-DDEFAULT_COLLATION=utf8_general_ci\
-DWITH_EMBEDDED_SERVER=1
if [$?
!
=0];then
echo "cmakeerror!
"
exit 1
fi
make && make install
if [$?
-ne 0];then
echo "installmysqlisfailed!
" && /bin/false
fi
sleep 2
ln -s /usr/local/mysql/bin/* /usr/bin/
cp -f /usr/local/mysql/support-files/my-f /etc/f
cp -f /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod 700 /etc/init.d/mysqld
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=$DBDIR--user=mysql
if [$?
-ne 0];then
echo "installmysqlisfailed!
" && /bin/false
fi
/etc/init.d/mysqld start
if [$?
-ne 0];then
echo "installmysqlisfailed!
" && /bin/false
fi
chkconfig--addmysqld
chkconfigmysqldon
/usr/local/mysql/bin/mysql -e "updatemysql.usersetpassword=password('$PASSWD')wherehost='localhost'anduser='root';"
/usr/local/mysql/bin/mysql -e "updatemysql.usersetpassword=password('$PASSWD')wherehost='127.0.0.1'anduser='root';"
/usr/local/mysql/bin/mysql -e "deletefromm
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ansible安装及应用部署 副本 ansible 安装 应用 部署