[ansible] 利用ansible自动化部署进行alisql5.6.32的安装

站在巨人的肩膀上

part.1 host配置

[root@localhost ansible]# cat /etc/ansible/hosts 
[testpc] 
192.168.123.103 ansible-ssh-user=root ansible-ssh-pass=3eno2017

part.2 依赖包

在这里我想完成的是,在没有外网的情况下进行安装,那么我需要得到非常完整的依赖包,那么,我先在有外网的情况下,利用利用yum安装对安装包进行下载,并下载相关的依赖包。

yum install    --downloadonly --downloaddir=path

下面是我在纯净环境下,无外网的情况下需要的依赖包列表。

autoconf-2.69-11.el7.noarch.rpm                perl-File-Temp-0.23.01-3.el7.noarch.rpm
bison-2.7-4.el7.x86_64.rpm                     perl-Filter-1.49-3.el7.x86_64.rpm
bison-devel-2.7-4.el7.x86_64.rpm               perl-Getopt-Long-2.40-2.el7.noarch.rpm
cmake-2.8.12.2-2.el7.x86_64.rpm                perl-Git-1.8.3.1-6.el7_2.1.noarch.rpm
cpp-4.8.5-11.el7.x86_64.rpm                    perl-HTTP-Tiny-0.033-3.el7.noarch.rpm
gcc-4.8.5-11.el7.x86_64.rpm                    perl-libs-5.16.3-291.el7.x86_64.rpm
gcc-c++-4.8.5-11.el7.x86_64.rpm                perl-macros-5.16.3-291.el7.x86_64.rpm
git-1.8.3.1-6.el7_2.1.x86_64.rpm               perl-parent-0.225-244.el7.noarch.rpm
glibc-2.17-157.el7_3.4.x86_64.rpm              perl-PathTools-3.40-5.el7.x86_64.rpm
glibc-common-2.17-157.el7_3.4.x86_64.rpm       perl-Pod-Escapes-1.04-291.el7.noarch.rpm
glibc-devel-2.17-157.el7_3.4.x86_64.rpm        perl-podlators-2.5.1-3.el7.noarch.rpm
glibc-headers-2.17-157.el7_3.4.x86_64.rpm      perl-Pod-Perldoc-3.20-4.el7.noarch.rpm
kernel-headers-3.10.0-514.21.2.el7.x86_64.rpm  perl-Pod-Simple-3.28-4.el7.noarch.rpm
libarchive-3.1.2-10.el7_2.x86_64.rpm           perl-Pod-Usage-1.63-3.el7.noarch.rpm
libgnome-keyring-3.8.0-3.el7.x86_64.rpm        perl-Scalar-List-Utils-1.27-248.el7.x86_64.rpm
libmpc-1.0.1-3.el7.x86_64.rpm                  perl-Socket-2.010-4.el7.x86_64.rpm
libstdc++-devel-4.8.5-11.el7.x86_64.rpm        perl-Storable-2.45-3.el7.x86_64.rpm
m4-1.4.16-10.el7.x86_64.rpm                    perl-TermReadKey-2.30-20.el7.x86_64.rpm
mpfr-3.1.1-4.el7.x86_64.rpm                    perl-Text-ParseWords-3.29-4.el7.noarch.rpm
ncurses-devel-5.9-13.20130511.el7.x86_64.rpm   perl-threads-1.87-4.el7.x86_64.rpm
perl-5.16.3-291.el7.x86_64.rpm                 perl-threads-shared-1.43-6.el7.x86_64.rpm
perl-Carp-1.26-244.el7.noarch.rpm              perl-Time-HiRes-1.9725-3.el7.x86_64.rpm
perl-constant-1.27-2.el7.noarch.rpm            perl-Time-Local-1.2300-2.el7.noarch.rpm
perl-Data-Dumper-2.145-3.el7.x86_64.rpm        rsync-3.0.9-17.el7.x86_64.rpm
perl-Encode-2.51-7.el7.x86_64.rpm              unzip-6.0-16.el7.x86_64.rpm
perl-Error-0.17020-2.el7.noarch.rpm            zlib-1.2.7-17.el7.x86_64.rpm
perl-Exporter-5.68-3.el7.noarch.rpm            zlib-devel-1.2.7-17.el7.x86_64.rpm
perl-File-Path-2.09-2.el7.noarch.rpm

part.3 copy.yml的编写

首先我们需要把我们的alisql和依赖包发送到我们的分机.

- name: sent dep
  hosts: all
  user: root
  gather_facts: false
  tasks:
  - name: sent dep
    copy: src=/tmp/gcc-c++ dest=/tmp/ force=yes
  - name: mkdir all
    shell: mkdir -p /etc/ansible/roles/mysql_install/
  - name: sent alisql
    copy: src=/etc/ansible/roles/mysql_install/files dest=/etc/ansible/roles/mysql_install/ force=yes

在这个yml中,copy模块的src指的是主机上的文件夹目录或者文件,dest指的是分机上的目录,然后完成拷贝工作。

part.4 yum_install.yml的编写

- name: instal yum
  hosts: all
  user: root
  gather_facts: false
  vars:
  - filespath: "/etc/ansible/roles/mysql_install/files/"
  - mysqlpath: "/usr/local/"
  tasks:
  - name: rpm mariadb
    shell: rpm -ev mariadb-libs-5.5.35-3.el7.x86_64 --nodeps || /usr/bin/true
    ignore_errors: yes
  - name: yum_install_local
    shell: cd /tmp/gcc-c++ && yum -y install *.rpm || /usr/bin/true
  - name: shutdown hugepage
    shell: echo never > /sys/kernel/mm/transparent_hugepage/enabled && echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled"
>> /etc/rc.local && chmod +x /etc/rc.d/rc.local && systemctl disable tuned
  - name: unzip AliSQL
    unarchive: src=/etc/ansible/roles/mysql_install/files/AliSQL-5.6.32.zip dest=/usr/local copy=no
  - name: rename
    shell: mv /usr/local/alibaba-AliSQL-cc84a09 /usr/local/mysql
  - name: new group and user
    shell: groupadd mysql && useradd -g mysql mysql || /usr/bin/true
    ignore_errors: yes
  - name: cmake
    shell: cmake                                -DCMAKE_BUILD_TYPE="Release"          -DCMAKE_INSTALL_PREFIX="/usr/local/mysql"  -DWITH
_EMBEDDED_SERVER=0              -DWITH_EXTRA_CHARSETS=all             -DWITH_MYISAM_STORAGE_ENGINE=1        -DWITH_INNOBASE_STORAGE_ENG
INE=1      -DWITH_PARTITION_STORAGE_ENGINE=1     -DWITH_CSV_STORAGE_ENGINE=1           -DWITH_ARCHIVE_STORAGE_ENGINE=1       -DWITH_BLA
CKHOLE_STORAGE_ENGINE=1     -DWITH_FEDERATED_STORAGE_ENGINE=1     -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 /usr/local/mysql
  - name: make and insatll
    shell: make -j4 && make install
  - name: copy mysql configure
    copy: src=/etc/ansible/roles/mysql_install/files/my.cnf dest=/etc/my.cnf force=yes
 name: chmod scripts
    file: path=scripts/mysql_install_db mode=0755
  - name: mkdir tmp
    file: path=/usr/local/mysql/tmp state=directory
  - name: chown all file in dic mysql
    shell: chown -R mysql:mysql /usr/local/mysql
  - name: execute scripts
    shell: scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
  - name: copy scripts
    shell: cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld && chmod 755 /etc/init.d/mysqld
  - name: chkconfig on
    shell: chkconfig mysqld on
  - name: add mysql PATH to profile
    shell: echo "export PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile && source /etc/profile
  - name: start mysqld
    shell: /etc/init.d/mysqld start && /usr/local/mysql/bin/mysql --protocol tcp

上面这个脚本其实就是按着我原来手动安装alisql的步骤改写的,下面附上传送门,方便对照看。centos7---alisql5.6.32的安装
当然我这个脚本到最后只是把mysql这个服务起来,并没有进行密码配置,这些需要使用者自己添加,设置。

part.5 运行结果

运行 copy.yml

[root@localhost ansible---mysql]# ansible-playbook copy.yml 

PLAY [sent dep] ***********************************************************************************************************************

TASK [sent dep] ***********************************************************************************************************************
changed: [192.168.123.103]

TASK [mkdir all] **********************************************************************************************************************
 [WARNING]: Consider using file module with state=directory rather than running mkdir

changed: [192.168.123.103]

TASK [sent alisql] ********************************************************************************************************************
ok: [192.168.123.103]

PLAY RECAP ****************************************************************************************************************************
192.168.123.103            : ok=3    changed=2    unreachable=0    failed=0   

运行 yum_install.yml

[root@localhost ansible---mysql]# ansible-playbook  yum_install.yml 

PLAY [instal yum] **********************************************************************************************************************************************************************************************************************************************

TASK [rpm mariadb] *********************************************************************************************************************************************************************************************************************************************
 [WARNING]: Consider using yum, dnf or zypper module rather than running rpm

changed: [192.168.123.103]

TASK [yum_install_local] ***************************************************************************************************************************************************************************************************************************************
changed: [192.168.123.103]

TASK [shutdown hugepage] ***************************************************************************************************************************************************************************************************************************************
changed: [192.168.123.103]

TASK [unzip AliSQL] ********************************************************************************************************************************************************************************************************************************************
changed: [192.168.123.103]

TASK [rename] **************************************************************************************************************************************************************************************************************************************************
changed: [192.168.123.103]

TASK [new group and user] **************************************************************************************************************************************************************************************************************************************
changed: [192.168.123.103]

TASK [cmake] ***************************************************************************************************************************************************************************************************************************************************
changed: [192.168.123.103]

TASK [make and insatll] ****************************************************************************************************************************************************************************************************************************************
changed: [192.168.123.103]

TASK [copy mysql configure] ************************************************************************************************************************************************************************************************************************************
ok: [192.168.123.103]

TASK [chmod scripts] *******************************************************************************************************************************************************************************************************************************************
changed: [192.168.123.103]

TASK [mkdir tmp] ***********************************************************************************************************************************************************************************************************************************************
changed: [192.168.123.103]

TASK [chown all file in dic mysql] *****************************************************************************************************************************************************************************************************************************
 [WARNING]: Consider using file module with owner rather than running chown

changed: [192.168.123.103]

TASK [execute scripts] *****************************************************************************************************************************************************************************************************************************************
changed: [192.168.123.103]

TASK [copy scripts] ********************************************************************************************************************************************************************************************************************************************
changed: [192.168.123.103]

TASK [chkconfig on] ********************************************************************************************************************************************************************************************************************************************
changed: [192.168.123.103]

TASK [add mysql PATH to profile] *******************************************************************************************************************************************************************************************************************************
changed: [192.168.123.103]

TASK [start mysqld] ********************************************************************************************************************************************************************************************************************************************
changed: [192.168.123.103]

PLAY RECAP *****************************************************************************************************************************************************************************************************************************************************
192.168.123.103            : ok=16   changed=16  unreachable=0    failed=0

part.6 运行结束后

最后检查即可~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353

推荐阅读更多精彩内容