ansible远程执行的是non-login shell 并不会加载/etc/profile和~/.bash_profile下的环境变量,只加载~/.bashrc和/etc/bashrc 如果需要在ansible中执行需要特定环境变量的命令,将环境变量写在~/.bashrc ,然后source一下~/.bash_profile。
1. 执行顺序配置文件执行顺序:
* ANSIBLE_CONFIG (环境变量)
* ansible.cfg (in the current directory)
* .ansible.cfg (in the home directory)
* /etc/ansible/ansible.cfg
版本1.5以前的执行顺序:
* ansible.cfg (in the current directory)
* ANSIBLE_CONFIG (an environment variable)
* .ansible.cfg (in the home directory)
* /etc/ansible/ansible.cfg
2.配置文件ansible.cfg中的【default】配置项
Action_Plugins(扩展插件存放目录)
action_plugins = /usr/share/ansible_plugins/action_plugins
Ansible_Managed(插入Ansible模板的字符串)
ansible_managed = Ansible managed: {file} modified on %Y-%m-%d %H:%M:%S by {uid} on {host}
ask_pass(PlayBook是否需要提供密码,默认为No)
#ask_pass=True
ask_sudo_pass(PlayBook是否需要提供sudo 密码)
#ask_sudo_pass=True
callback_plugins(回调函数插件存放路径)
action_plugins = /usr/share/ansible_plugins/action_plugins
connection_plugins(连接插件存放路径)
action_plugins = /usr/share/ansible_plugins/action_plugins
deprecation_warnings(是否展示警告信息)
deprecation_warnings = True
display_skipped_hosts(是否展示跳过的主机的信息)
#display_skipped_hosts=True
error_on_undefined_vars(执行错误时候赋予的变量)
#error_on_undefined_vars=True
executable(默认的Shell)
#executable = /bin/bash
filter_plugins(拦截器插件)
action_plugins = /usr/share/ansible_plugins/action_plugins
forks(最大进程数)
forks=5
hash_behavior(哈希特性,没事不用去动它)
#hash_behavior=replace
hostfile(资产文件存放位置)
hostfile = /etc/ansible/hosts
host_key_checking(是否检查SSH key)
host_key_checking=True
jinja2_extensions(JinJa扩展)
jinja2_extensions = jinja2.ext.do,jinja2.ext.i18n
legacy_playbook_variables(PlayBook变量)
legacy_playbook_variables = no
library(Ansible默认库)
library = /usr/share/ansible
log_path(日志路径)
log_path=/var/log/ansible.log
lookup_plugins(插件路径)
action_plugins = /usr/share/ansible_plugins/action_plugins
module_name(默认模块名称)
module_name = command
nocolor(输出样式)
nocolor=0
nocows(是否使用cowsay打印)
nocows=0
pattern(主机)
hosts=*
poll_interval(pool间隔)
poll_interval=15
private_key_file(私钥的存放路径)
private_key_file=/path/to/file.pem
remote_port(远程连接端口号)
remote_port = 22
remote_tmp(远程目录临时文件夹)
remote_temp = $HOME/.ansible/tmp
remote_user(远程用户)
remote_user = root
roles_path(角色路径)
roles_path = /opt/mysite/roles
sudo_exe(SUDO执行)
sudo_exe=sudo
sudo_flags(SUDO标记)
sudo_flags=-H
sudo_user(sudo用户)
sudo_user=root
timeout(重连次数)
timeout = 10
transport(传输模式)
默认用的smart
vars_plugins(变量插件存放路径)
action_plugins = /usr/share/ansible_plugins/action_plugins
SSH变量
ssh_args(SSH连接参数)
ssh_args = -o ControlMaster=auto -o ControlPersist=60s
scp_if_ssh(采用SCP还是SFTP进行文件传输)
scp_if_ssh=False
Mongodb 部署信息 :
os: centos7.7 x64 配置好NTP,防火墙默认不做任何限制.
mongos部署两个点,config3个点,和3个分片集群(每个分片一主一副一仲裁)
注意:因为判断逻辑的问题,不要在任何节点同时运行两种服务的主点
ansible的hosts文件配置:
环境变量全部都在这里设置,需要都写入到ansible的hosts文件里
变量中
server_1_ip 都设置为主点
server_2_ip 都设置为副点
server_3_ip 都设置为仲裁节点(config server没有仲裁节点,但是也要写,不然mongos的配置文件模板会报错)
这些IP的配置后面在初始化时会用到.
ansible文件夹结构 :
首先是模板文件:
mongod.conf.mongos.j2mongos的配置文件模板
mongod.conf.normal.j2shard server和config server的配置文件模板
mongod.service.j2service文件模板
mongo.key 直接手动生成 ,用户MongoDB集群之间的加密连接,记得权限改为600
passwd.j2用于配置MongoDB的root用户名密码
执行:
按提示输入服务器密码
包含了系统优化相关设置,注意中间会重启一次让一些系统优化项生效
注意:因为判断逻辑的问题,不要在任何节点同时运行两种服务的主点
执行 :
如果执行有问题建议多检查变量配置
全部完成后可以验证一下集群环境:
登陆分片集群 :
分片的状态显示正常
登陆mongos
可以看到mongos的状态也正常,分片也全部都添加进去. 全部安装至此完成.
一键删除MongoDB安装及相关数据,方便重装...
一键启动整个MongoDB集群
一键停止所有MongoDB集群
以上就是ansible在MongoDB的一键部署脚本,而且附带了对服务器的优化相关配置
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)