如何在Fedora上安装Ansible
时间:2019-04-29 03:18:06 来源:igfitidea点击:
Ansible是一个类似于Chef和Puppet的免费开源的配置管理工具。它可以在基于SSH的会话上工作,不需要在远程服务器上使用任何软件或客户机/代理。人们可以使用Ansible来管理Linux、Unix、macOS和BSD系列操作系统。
如何在Fedora安装ansible并配置ansible playbook?
更新Fedora系统
$ sudo dnf update $ sudo dnf search ansible
在Fedora Linux上安装Ansbile
$ sudo dnf info ansible $ sudo dnf install ansible
安装后查看ansible版本
$ ansible --version
在linux上设置ssh密钥
在Fedora上使用ssh-keygen命令创建密钥对
$ ssh-keygen -t itrssh -C "Desktop ssh key"
复制并安装公钥到远程Linux/Unix/BSD服务器上
$ ssh-copy-id -i $HOME/.ssh/id_itrssh.pub itr@aliyun-ubuntu $ ssh-copy-id -i $HOME/.ssh/id_itrssh.pub [email protected] $ ssh-copy-id -i $HOME/.ssh/id_itrssh.pub [email protected]
测试是否可用不用密码就能登录到服务器上
$ssh [email protected]
测试Ansible
创建一个inventory文件
$ vi inventory
inventory:
[lanhosts] 10.9.80.3 192.168.1.250 [alihosts] aliyun-ubuntu
以用户itr的身份,在lanhosts中的两台主机上运行uptime命令和lsb_release命令:
$ ansible -u itr -i inventory -m raw -a 'uptime' lanhosts $ ansible -u itr -i inventory -m raw -a 'lsb_release -a' lanhosts
编写 Ansible playbook 来管理服务器
修改inventory文件,配置sudo参数
[all:vars] ansible_user='itr' ansible_become='yes' ansible_become_pass='passwd' ### itr的密码 ansible_become_method='sudo' [lanhosts] 10.9.80.3 192.168.1.250 [alihosts] aliyun-ubuntu
playbook其实就是在远程机器上执行的脚本/命令。创建一个名为test.yml的playbook,如下所示:
test.yml
---
- hosts: lanhosts
tasks:
- name: Get hostname for testing purpose
command: /bin/hostname
changed_when: False
register: hostname
- debug: var={{ item }}
with_items:
- hostname.stdout
运行:
$ ansible-playbook -i inventory test.yml
密码安全
我们直接把密码放在了inventory文件。 现在修改一下
inventory:
## ansible_become_pass='passwd' ### itr的密码
ansible_become_pass='{{ my_user_password }}'
然后创建一个文件 passwords.yml:
$ ansible-vault create passwords.yml
设置密码后,会打开编辑器。在最后添加
my_user_password: 这里填写密码
保存后,运行
$ ansible-playbook -i inventory --ask-vault-pass --extra-vars '@passwords.yml' test.yml
使用Ansible playbook添加用户
假设我们要给所有lanhosts组的服务器都添加一个新用户nginx。 新建一个yml文件:
add-user.yml
---
- hosts: lanhosts
tasks:
- name: Add a new user to my Linux VMs with password disabled but allow ssh log in
user:
name: nginx
comment: "Account to run jobs for our web server"
shell: /bin/bash
groups: sudo
append: yes
password: *
- name: Upload ssh key for user wwwjobs for log in purpose
authorized_key:
user: itr
state: present
manage_dir: yes
key: "{{ lookup('file', '/home/itr/.ssh/id_itrssh.pub') }}"
运行:
$ ansible-playbook -i inventory --ask-vault-pass --extra-vars '@passwords.yml' add-user.yml
如何使用ansible安装和删除包
我们将使用apt命令为lanhosts组中的所有主机添加和删除软件包。
创建一个ubuntu-pkg文件:
ubuntu-pkg.yml
---
- hosts: linodehosts
tasks:
- name: Add a list of software on VMs ...
apt:
name: "{{ packages }}"
state: present
vars:
packages:
- vim
- unzip
- htop
- atop
- iftop
- nmon
- sysstat
- iotop
- nicstat
- vnstat
- name: Delete a list of software from VMs ...
apt:
name: "{{ packages }}"
state: absent
vars:
packages:
- nano
运行
$ ansible-playbook -i inventory --ask-vault-pass --extra-vars '@passwords.yml' ubuntu-software.yml

