模块七:
hostname模块,修改主机名
模块八:
copy模块:用于复制指定主机的文件到远程主机的模块(必须要用绝对路径)
常用的参数:
Dest:指出要复制的文件在哪(去哪),必须使用绝对路径,如果原目标是目录,那么指目标也得是目录,如果目标存在,会覆盖原有的内容
Src:复制文件的源,最好使用绝对路径,原目标是目录,那么指目标也得目录
Owner:指定文件的所有者
Group:指出文件的所在组
Connect:从主机复制指定的内容到目标主机,用了content就不能使用src
Mode:指定复制之后的权限
练习:
在复制目录时,还是要复制完整的目录,即目录当中不能为空
赋权给的还是文件
例二:
Mv功能:
模块九:
文件模块跟目录无关
Owner
Group
Mode
State=link 创建链接文件
State=touch 创建文件
State=absent 删除文件
创建文件
File模块也可以生成目录
创建文件
修改文件的所有者和所在组
如何设置链接文件:
写一个需求:
如何远程的删除文件:
模块十:
yum模块
远程主机上安装和卸载软件:
在目标主机上的操作都是后台运行,不影响其他用户的使用
如何卸载
写一个需求:
模块十一:
server/systemd模块
Name,设定管理服务的名称
State=startd|stopped|restarted 操作管理
Enable=true 表示开机自启,如果不加,默认就是开机不自动启动
Rulevel:配合enable的,开机自启,可以设置运行级别,在命令行可以设置,但是不生效,必须要playbook当中使用,
演示:
演示一个需求:
模块十二:
script模块
运行本地脚本,然后把结果输出到目标主机
需求:
模块十三:
setup模块
Setup主要查看目标主机的环境系统系统
不加条件会打印所有
精确获取
查看IP地址
查看程CPU
查看内存
查看内核
查看系统,用的什么系统
查看内存
常用:
ansible all -m setup -a 'filter=*ipv4'
ansible all -m setup -a 'filter=*processor*'
ansible all -m setup -a 'filter=*mem*'
ansible all -m setup -a 'filter=*os*' #windows
ansible all -m setup -a 'filter=’*system*'
ansible all -m setup -a 'filter=’proc'
--------- inventory 主机清单 ---------
Ansible可以管理上千台主机
怎么快速声明多个主机
Ping一下
还是要设置密钥队,难道没有ssh就无法登录的吗,当然不是
如何无ssh密钥队登录
主机清单管理组当中的变量名:
Ansible_host 连接时的IP地址
在ansible当中也可以声明变量
//inventory 中的常用变量
Inventory变量名 含义
ansible_host ansible连接节点时的IP地址
ansible_port 连接对方的端口号,ssh连接时默认为22
ansible_user 连接对方主机时使用的用户名。不指定时, 将使用执行ansible或ansible-playbook命令的用户
ansible_password 连接时的用户的ssh密码,仅在未使用密钥对验证的情况下有效
ansible_ssh_private_key_file 指定密钥认证ssh连接时的私钥文件
ansible_ssh_common_args 提供给ssh、sftp、scp命令的额外参数
ansible_become 允许进行权限提升
ansible_become_method 指定提升权限的方式,例如可使用sudo/su/runas等方式
ansible_become_user 提升为哪个用户的权限,默认提升为root
ansible_become_password 提升为指定用户权限时的密码(免密钥登录才可以实现)
例如:一开始的用户为张三,使用ansible_become_password可以把用户改为root
如何集群试的给主机进行免密钥登录
取消注释
直接ping测试:
多台主机呢,一台一台ping台繁琐
多ping前提:主机密码相同,用户名相同,端口相同
对组的范围之内声明
声明所有:
Ping测试:
红色主机尚未打开
如何来实现组之间的嵌套:在声明好组之后,把不同的组放入里面
vim /etc/hosts
这个名字是不能随便起的,就叫children