0
点赞
收藏
分享

微信扫一扫

ansibel-play-book之mongodb6.0.4单机部署

蓝莲听雨 2023-03-30 阅读 45

一.准备环境:

1.centos7 环境

2.安装ansible环境

3.mongodb二进制文件:可以先用yum安装拿取需要mongodb二进制文件

mongod, mongodump,mongoexport, mongofiles,mongoimport,mongorestore,mongos,mongosh,mongostat

4.mongodb安装主机,作者用192.168.126.128作为mongodb安装环境


二.规划:

1.变量规划:

安装路径:mongodb_dir: /kingdee/mongodb

监听端口:mongodb_port: 27017

运行用户:mongodb_start_user: yzj

用户名称:mongodbuser: yzjuser

用户密码:mongodbpass: Mytest@@@@@@1203


2.mongodb目录规划:

数据目录:/kingdee/mongodb/27017/data

执行文件:/kingdee/mongodb/27017/bin

日志文件:/kingdee/mongodb/27017/logs


三.编写ansible-playbook:

1.创建ansible-playbook目录

mkdir -p roles/mongodb_single/{files,tasks,templates,vars}


2.模板文件配置

cd roles/mongodb_single/templates

#认证配置文件

vim only_mongodb_auth.conf.j2 

systemLog:

  destination: file

  logAppend: true

  path: /kingdee/mongodb/{{mongodb_port}}/logs/mongod.log

storage:

  dbPath:  /kingdee/mongodb/{{mongodb_port}}/data

  journal:

    enabled: true

processManagement:

  fork: true  # fork and run in background

  pidFilePath: /kingdee/mongodb/{{mongodb_port}}/mongod.pid

  timeZoneInfo: /usr/share/zoneinfo

net:

  port: {{mongodb_port}}

  bindIp: 0.0.0.0

security:

  authorization: enabled


#无需认证配置文件

vim only_mongodb_unauth.conf.j2

systemLog:

  destination: file

  logAppend: true

  path: /kingdee/mongodb/{{mongodb_port}}/logs/mongod.log


storage:

  dbPath:  /kingdee/mongodb/{{mongodb_port}}/data

  journal:

    enabled: true


processManagement:

  fork: true  # fork and run in background

  pidFilePath: /kingdee/mongodb/{{mongodb_port}}/mongod.pid

  timeZoneInfo: /usr/share/zoneinfo


net:

  port: {{mongodb_port}}

  bindIp: 0.0.0.0


#secutity:

#  authorization: enabled

 

#mongodb 启停脚本

start(){
{{mongodb_dir}}/{{mongodb_port}}/bin/mongod -f  {{mongodb_dir}}/{{mongodb_port}}/bin/{{mongodb_port}}.conf
}

stop(){
{{mongodb_dir}}/{{mongodb_port}}/bin/mongod -f  {{mongodb_dir}}/{{mongodb_port}}/bin/{{mongodb_port}}.conf --shutdown
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 10
start
;;
*)
echo "Only param { start|stop|restart } is supported !"
esac


3.二进制文件准备:

 cd roles/mongodb_single/files

将文件copy到给目录下:

mongod, mongodump,mongoexport, mongofiles,mongoimport,mongorestore,mongos,mongosh,mongostat

ansibel-play-book之mongodb6.0.4单机部署_vim


4.编写playbook

cd roles/mongodb_single/tasks

vim installmongodb.yml

---
- name: "gourpadd start user"
  group:
    name:  "{{mongodb_start_user}}"
    gid:   "9999"
    state: "present"
  ignore_errors: yes

- name: "useradd start user"
  user:
    name:  "{{mongodb_start_user}}"
    uid:   "9999"
    group: "{{mongodb_start_user}}"
  ignore_errors: yes

- name: "mkdir {{mongodb_dir}}/{{mongodb_port}}/bin"
  file:
    path:  "{{mongodb_dir}}/{{mongodb_port}}/{{item}}"
    state: "directory"
    owner: "{{mongodb_start_user}}"
    group: "{{mongodb_start_user}}"
    mode:  0755
    recurse: yes
  with_items:
    - data
    - logs
    - bin
  ignore_errors: yes


- name: "copy mongodb bin to {{mongodb_dir}}/{{mongodb_port}}/bin"
  copy:
    src:  "{{item}}"
    dest: "{{mongodb_dir}}/{{mongodb_port}}/bin/{{item}}"
  with_items:
    - mongod
    - mongodump
    - mongoexport
    - mongofiles
    - mongoimport
    - mongorestore
    - mongos
    - mongosh
    - mongostat
    - mongotop

- name: "chown -R {{mongodb_start_user}}:{{mongodb_start_user}} kingdee/mongodb/{{mongodb_port}}"
  shell: |
    chown -R {{mongodb_start_user}}:{{mongodb_start_user}} {{mongodb_dir}}/{{mongodb_port}}
    chmod -R 755 {{mongodb_dir}}

- name: "copy mongodb config to  {{mongodb_dir}}/{{mongodb_port}}/bin"
  template:
    src:  only_mongodb_unauth.conf.j2
    dest: "{{mongodb_dir}}/{{mongodb_port}}/bin/{{mongodb_port}}_unauth.conf"

- name: "copy mongodb config to  {{mongodb_dir}}/{{mongodb_port}}/bin"
  template:
    src:  only_mongodb_auth.conf.j2
    dest: "{{mongodb_dir}}/{{mongodb_port}}/bin/{{mongodb_port}}.conf"

- name: "copy mongodb start shell to {{mongodb_dir}}/{{mongodb_port}}/bin/{{mongodb_port}}.conf"
  template:
    src: only_mongodb.start.sh.js
    dest: "{{mongodb_dir}}/{{mongodb_port}}/bin/start_mongodb_{{mongodb_port}}.sh"

- name:  "start mongodb"
  shell: "{{mongodb_dir}}/{{mongodb_port}}/bin/mongod -f {{mongodb_dir}}/{{mongodb_port}}/bin/{{mongodb_port}}_unauth.conf"

vim installmongodb.yml

- name: "create mongodb for mongodb"
  shell: |
     {{mongodb_dir}}/{{mongodb_port}}/bin/mongosh --port {{mongodb_port}} --host {{ansible_ssh_host}} admin --eval \
     'db.createUser({user:"{{mongodbuser}}",pwd:"{{mongodbpass}}",roles:[{role:"root",db:"admin"}]})'
  ignore_errors: yes

- name: "remove unauth.config"
  file:
    path:  "{{mongodb_dir}}/{{mongodb_port}}/bin/{{mongodb_port}}_unauth.conf "
    state: absent

- name: "restart mongodb "
  shell: |
    sh  {{mongodb_dir}}/{{mongodb_port}}/bin/start_mongodb_{{mongodb_port}}.sh restart

vim main.yml

---
- include_tasks: installmongodb.yml
- include_tasks: createUser.yml

tasks下文件如下:

ansibel-play-book之mongodb6.0.4单机部署_mongodb_02


四.编写hosts文件,与roles文件在同级目录:

vim hosts

[mongodb_single]

mongodb_single ansible_ssh_host=192.168.126.128


五.编写运行yml文件

vim startinstall_single_mongodb.yml

---
- hosts: mongodb_single
  remote_user: yzj
  #become_method: sudo
  #$become_user: root
  #$become: yes
  gather_facts: no
  vars:
    - mongodb_dir: /kingdee/mongodb
    - mongodb_port: 27017
    - mongodb_start_user: yzj
    - mongodbuser: yzjuser
    - mongodbpass: Mytest@@@@@@1203

  roles:
    - role: mongodb_single


总体ansible-playbook目录如图所示【忽略rpm目录部分】:ansibel-play-book之mongodb6.0.4单机部署_vim_03


六.ansible执行mongodb安装,最好在roles同级目录执行;

ansible-playbook -i hosts startinstall_single_mongodb.yml

ansibel-play-book之mongodb6.0.4单机部署_vim_04


七.执行完成后连接mongodb进行相关测试:

/kingdee/mongodb/27017/bin/mongosh --port 27017 admin

admin> db.auth("yzjuser","Mytest@@@@@1203")

admin>show dbs

ansibel-play-book之mongodb6.0.4单机部署_vim_05


至此,ansible-playbook部署单机版mongodb已完成,下面会讲到副本集使用ansible-playbook进行部署





















举报

相关推荐

0 条评论