ansible安装部署
ansible安装部署
1、ansible安装
管理机上安装ansible,被管理节点必须打开ssh服务 yum install epel-release yum install -y ansible ansible --version 在管理机上对其他机器做免密操作 ssh-keygen ssh-copy-id -i 192.168.10.108 ssh-copy-id -i 192.168.10.110 配置文件位置/etc/ansible/ansible.cfg,里面存放的都是各个配置文件的具体位置
2、定义服务器分组的配置文件
vim /etc/ansible/hosts 在末尾添加 [group1] 192.168.10.107 192.168.10.110 [nginx] apache[1:10].aaa.com 表示apache1.aaa.com到apache10.aaa.com这10台机器 nginx[a:z] 表示nginxa到nginxz这26台机器 192.168.10.[11:15] 表示192.168.10.11到192.168.10.15这5台机器 10.1.1.13:2222 表示10.1.1.13这台,但ssh的端口为2222 nginx1 表示别名为nginx1的这台机器 定义10.1.1.12:2222这台服务器的别名为nginx1 nginx1 ansible_ssh_host=10.1.1.12 ansible_ssh_port=2222 没有做免密登录的服务器可以指定用户名与密码 nginx1 ansible_ssh_host=10.1.1.13 ansible_ssh_port=2222 ansible_ssh_user=root ansible_ssh_pass="123456" 公共变量 [web:vars] ansible_ssh_port=22999 ansible_ssh_user=root ansible_ssh_pass=123123 [web] 172.16.1.[7:9]
新版参数
参数 参数类型 参数说明 ansible_host 主机地址 远程主机ip ansible_port 主机端口 设置SSH连接端口,默认22 ansible_user 主机用户 默认SSH远程连接的用户身份 ansible_password 用户密码 指定SSH远程主机密码 故障解决
可能会遇见如下问题,关于新机器的指纹确认问题。
[root@master-61 ~]#ansible 172.16.1.9 -m ping 172.16.1.9 | FAILED! => { "msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host's fingerprint to your known_hosts file to manage this host." }
解决办法1,手动ssh连接,进行指纹确认,写入到本机的
[root@master-61 ~]#cat ~/.ssh/known_hosts
解决办法2,ansible配置文件中忽略指纹确认
[root@master-61 ~]#grep 'host_key_checking' /etc/ansible/ansible.cfg host_key_checking = False
ansible命令用法
ansible 操作的机器名或组名 -m 模块名 -a "参数1=值1 参数2=值2"
ansible的状态,就是如下的颜色区分,看到不同的状态 绿色:命令以用户期望的执行了,但是状态没有发生改变; 黄色:命令以用户期望的执行了,并且状态发生了改变; 紫色:警告信息,说明ansible提示你有更合适的用法;出现了warning警告 红色:命令错误,执行失败; 蓝色:详细的执行过程;
关闭告警信息 ansible web -m command -a "touch /opt/人生无常大肠包小肠.log warn=false "
使用command提供的专有命令
这些命令用于编写ansible-playbook,完成服务器部署的各种复杂条件限定。
选项参数 选项说明 chdir 在执行命令执行,通过cd命令进入指定目录 creates 定义一个文件是否存在,若不存在,则运行相应命令;存在则跳过 free_form(必须) 参数信息中可以输入任何系统命令,实现远程管理 removes 定义一个文件是否存在,如果存在,则运行相应命令;如果不存在则跳过
在/opt下创建test.log 2个写法 ansible web -a "touch /opt/chaoge666.log" ansible web -a "touch chaoge666.log chdir=/opt"
备份/backup_config,必须先有文件夹,才能执行该备份命令 ansible web -a "tar -zcf /backup_config/etc.tgz etc chdir=/ removes=/backup_config"
创建/opt目录 ansible backup -m command -a 'mkdir /opt creates=/opt'
shell模块(万能模块)
shell模块可以识别特殊符号,就等于远程执行命令了
通过一条命令,做如下事情 - 创建文件夹 - 生成sh脚本文件(查看主机名) - 赋予脚本可执行权限 - 执行脚本 - 忽略warning信息 ansible web -m shell -a "mkdir /test/;echo 'hostname' > /test/hostname.sh;chmod +x /test/hostname.sh;/test/hostname.sh; warn=false"
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性