ansible远程没有环境变量

ansible远程没有环境变量,第1张

首先,在脚本中添加echo $JAVA_HOME ,which java ,echo $(whoami),然后用ansible远程执行,发现为root用户但输出为空和找不到java其次,在~/.bash_profile中添加环境变量,用ansible远程执行脚本,发现依然输出为空和找不到java环境变量最后,考虑ansible执行的环境变量与登录时使用的环境变量不同,所以将JAVA_HOME写在/etc/bashrc中,用ansible远程执行脚本,发现执行正常; 至此,确定ansible执行过程中并未调用/etc/profile和~/.bash_profile

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的一键部署脚本,而且附带了对服务器的优化相关配置


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11738687.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存