## 1、安裝并啟動httpd
1、查看hosts
vim /etc/ansible/hosts
指定要連接遠程主機的IP地址,用戶名密碼
```
[test]
192.168.56.11 ansible_ssh_user="root" ansible_ssh_pass="tuna"
```
2、編寫playbook
vim httpd.yml
```
- hosts: test
vars:
http_port: 80
max_clients: 200
tasks:
- name: ensure apache is at the latest version
yum:
name: httpd
state: latest
- name: start httpd
service:
name: httpd
state: started
```
## 2、 修改用戶密碼
### 2.1 使用user模塊
1、 使用Python加密密碼
```
[root@localhost playbook]# python
Python 2.7.5 (default, Aug 4 2017, 00:39:18)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import crypt
>>> crypt.crypt('666666')
'$6$fS8goXMs4bO9YRn.$8lQZ3xCOJMMEj/ov1KmSvZpNtQF22WUsxRb6Mp1zgTJq2SZ.XiXCs.I5Sx5985hvOCpC9S5NPEdYNLIP9veVP.'
>>>
```
或者使用腳本
```
#!/usr/bin/python
# -*- coding:utf-8 -*-
import crypt
import sys
def generate_pwd(password):
print("加密前:%s" % password)
print("加密后:%s" % crypt.crypt(password))
if __name__ == "__main__":
if(len(sys.argv) != 2):
print("eg:sys.argv[0] arg1")
exit(1)
else:
generate_pwd(sys.argv[1])
```
對789加密
```
[root@localhost playbook]# ./generate_password.py 789
加密前:789
加密后:$6$JF0I6DXqV5W9osb7$trt3TC0RopaBWC4IgV058ajZukULsw.Uhbym.dDRmkJMdveHlAzLdoBwzg62feONam4DrR0DzwkgI8EUdrl2v1
[root@localhost playbook]# ansible test -m user -a 'name=tuna password="$6$JF0I6DXqV5W9osb7$trt3TC0RopaBWC4IgV058ajZukULsw.Uhbym.dDRmkJMdveHlAzLdoBwzg62feONam4DrR0DzwkgI8EUdrl2v1"'
```
2、使用user模塊修改密碼
將加密后的密碼,進行使用,修改密碼
```
ansible test -m user -a 'name=tuna password="$6$fS8goXMs4bO9YRn.$8lQZ3xCOJMMEj/ov1KmSvZpNtQF22WUsxRb6Mp1zgTJq2SZ.XiXCs.I5Sx5985hvOCpC9S5NPEdYNLIP9veVP."'
```
### 2.2 shell命令
```
[root@localhost ~]# ansible test -m shell -a "echo 'tuna:9DA7ewq#81YN' | chpasswd"
192.168.56.11 | SUCCESS | rc=0 >>
```
注意:密碼中$會轉義其他字符,所以修改后的秘密和預設不一樣
### 2.3 playbook
不存在特殊字符的限制
```
- hosts: test
tasks:
- name: chang user password
shell: echo 'tuna:\!@#$%.%^&*?\$q' | chpasswd
```
執行playbook
```
[root@localhost playbook]# ansible-playbook change_password.yml
PLAY [test] ***************************************************************************************************************
TASK [Gathering Facts] ****************************************************************************************************
ok: [192.168.56.11]
TASK [chang user password] ************************************************************************************************
changed: [192.168.56.11]
PLAY RECAP ****************************************************************************************************************
192.168.56.11 : ok=2 changed=1 unreachable=0 failed=0
```
## 3、copy文件
```
[root@localhost playbook]# ansible test -m copy -a "src=/root/playbook/generate_password.py dest=/root/ owner=tuna group=tuna mode=0644"
192.168.56.11 | SUCCESS => {
"changed": true,
"checksum": "44c5fbbfd82fd30daf1bb5d924635ffe890d3426",
"dest": "/root/generate_password.py",
"gid": 1000,
"group": "tuna",
"md5sum": "77b0058ae5852046f1f7ae2c699231b3",
"mode": "0644",
"owner": "tuna",
"secontext": "system_u:object_r:admin_home_t:s0",
"size": 327,
"src": "/root/.ansible/tmp/ansible-tmp-1557106908.87-184674353262296/source",
"state": "file",
"uid": 1000
}
```
- Linux
- 高級
- 殺毒
- 記一次中毒事件
- clamav查毒軟件
- 處理挖礦病毒
- 定時任務
- kill
- chattr文件保護
- 運行級別
- Linux啟動
- 文件加密
- ssh免密登錄
- .ssh
- 問題
- 腳本
- 阿里云域名解析
- yum源
- 時間同步
- keepalived實現高可用
- dos字符與unix字符
- 大文件上傳
- 基礎
- proc目錄
- 設置宋體
- 基礎命令_01
- 基礎命令_02
- SELinux
- 文件描述符
- 基礎命令_03
- awk
- 系統日志
- date命令
- bc命令
- lsof
- vim快捷鍵
- shell
- 循環控制
- expr
- 執行腳本的方式
- declare
- shell腳本
- 控制啟停腳本
- 數值計算
- centos
- 配置網絡
- 環境
- 灰度環境
- ansible
- 模塊
- 語法
- file模塊
- setup模塊
- ping模塊
- copy模塊
- command模塊
- shell模塊
- service模塊
- cron模塊
- yum模塊
- user 模塊
- group模塊
- 指定用戶
- playbook
- 實例
- ansible安裝
- Jenkins
- shell部署
- 導入已有項目的配置
- 執行shell
- tungsten數據同步
- 防火墻
- netfilter