我已经使用python boto模块从AWS iam成功获取了用户.
码:
import boto
from boto.iam.connection import IAMConnection
cfn = IAMConnection(aws_access_key_id='somekeyid',aws_secret_access_key ='secret_here')
data = cfn.get_all_users()
for user in data.users:
print user,"\n"
Run Code Online (Sandbox Code Playgroud)
如何获取用户与之关联的组详细信息或与用户关联的权限类型?
我添加了这行代码来获取与用户关联的组,我收到了下面提到的错误.
新增代码:
group=cfn.get_groups_for_user("Shital")
print group
Run Code Online (Sandbox Code Playgroud)
其中,"Shital"是存在并从上方取出的用户.出于测试目的,我手动将其传递给函数调用.
错误:
Traceback (most recent call last):
File "getuser.py", line 14, in <module>
pol=cfn.get_groups_for_user("Shita")
File "/home/tara/testinghere/IAM/env/local/lib/python2.7/site-packages/boto/iam/connection.py", line 509, in get_groups_for_user
list_marker='Groups')
File "/home/tara/testinghere/IAM/env/local/lib/python2.7/site-packages/boto/iam/connection.py", line 102, in get_response
raise self.ResponseError(response.status, response.reason, body)
boto.exception.BotoServerError: BotoServerError: 403 Forbidden
<ErrorResponse xmlns="https://iam.amazonaws.com/doc/2010-05-08/">
<Error>
<Type>Sender</Type>
<Code>AccessDenied</Code>
<Message>User: arn:aws:iam::586848946515:user/qa-api-users is not authorized to perform: iam:ListGroupsForUser on resource: user …Run Code Online (Sandbox Code Playgroud) 我创建了一个服务,并将其暴露在我的docker swarm节点中的localhost上,但我可以公开访问该服务.
我删除并重新部署了docker堆栈,但仍然存在同样的问题.
这是我的docker-compose.yml我用来在堆栈中部署服务
version: "3"
networks:
api-net:
ipam:
config:
- subnet: 10.0.10.0/24
services:
health-api:
image: myprivateregistry:5000/healthapi:qa
ports:
- "127.0.0.1:9010:9010"
networks:
- api-net
depends_on:
- config-server
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
Run Code Online (Sandbox Code Playgroud)
我没有添加它所依赖的服务,因为我不认为这是问题所在.
很少有人说它在docker swarm模式下不受支持.而不是那种情况下的解决方案.
试图在docker stack上部署laravel应用程序。我感到困惑或无法弄清的是,我可以在哪里运行此php artisan migrate:fresh生成mysql中所需的表。
服务和任务运行良好
docker-compose.yml
version: '3.3'
networks:
smstake:
ipam:
config:
- subnet: 10.0.10.0/24
services:
db:
image: mysql:5.7
networks:
- smstake
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: smstake
MYSQL_USER: root
MYSQL_PASSWORD: password
deploy:
mode: replicated
placement:
constraints:
- node.role == manager
app:
image: smstake:latest
ports:
- 8000:80
networks:
- smstake
command: docker-compose exec app php artisan migrate --seed
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
volumes:
db_data:
Run Code Online (Sandbox Code Playgroud)
这是用于生成映像的dockerfile
FROM alpine
ENV …Run Code Online (Sandbox Code Playgroud) 我试图通过使用alertmanager获得Prometheus发现的警报以获得松弛通知.
这是alert.rules文件,工作正常
groups:
- name: Instances
rules:
# Alert for any instance that is unreachable for >5 minutes.
- alert: InstanceDown
expr: up == 0
for: 5m
labels:
severity: page
# Prometheus templates apply here in the annotation and label fields of the alert.
annotations:
description: '{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 5 minutes.'
summary: 'Instance {{ $labels.instance }} down'
Run Code Online (Sandbox Code Playgroud)
但是我的alertmanager.yml中的问题是它没有向slack发送通知.我也成功设置了松弛的webhook,甚至测试了钩子是否正常工作,同时创建了一个钩子与松弛提供的服务
alertmanager.yml
groups: …Run Code Online (Sandbox Code Playgroud) docker-compose.yml: 这是运行 prometheus、node-exporter 和 alert-manager 服务的 docker -compose。所有服务都运行良好。甚至prometheus的目标菜单中的健康状况也显示正常。
version: '2'
services:
prometheus:
image: prom/prometheus
privileged: true
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- ./alertmanger/alert.rules:/alert.rules
command:
- '--config.file=/etc/prometheus/prometheus.yml'
ports:
- '9090:9090'
node-exporter:
image: prom/node-exporter
ports:
- '9100:9100'
alertmanager:
image: prom/alertmanager
privileged: true
volumes:
- ./alertmanager/alertmanager.yml:/alertmanager.yml
command:
- '--config.file=/alertmanager.yml'
ports:
- '9093:9093'
Run Code Online (Sandbox Code Playgroud)
普罗米修斯.yml
这是带有目标和警报目标集的 prometheus 配置文件。警报管理器目标网址工作正常。
global:
scrape_interval: 5s
external_labels:
monitor: 'my-monitor'
# this is where I have simple alert rules
rule_files:
- ./alertmanager/alert.rules
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: …Run Code Online (Sandbox Code Playgroud) 我已成功在slack api中添加了一个应用程序,其权限范围设置为管理团队:
我已从Legacy令牌生成器生成令牌.我正在使用邮递员的以下信息进行api调用.
端点:https://slack.com/api/users.list
方法:GET
头:
关键=令牌
value =令牌生成
它回复了我以下的回应
{
"ok": false,
"error": "not_authed"
}
Run Code Online (Sandbox Code Playgroud)
使用curl尝试相同的东西是有效的,但使用POST方法,并不适用于GET方法
curl -X POST https://slack.com/api/users.list --data "token=codehere"
Run Code Online (Sandbox Code Playgroud)
我到底哪里错了.
docker-compose.yml 这是我的docker -compose文件,用于使用docker -stack在多个实例中部署服务.正如您所看到的那样,应用程序服务是在两个节点中运行的laravel和其中一个节点中的数据库(mysql).
完整代码存储库: https ://github.com/taragurung/Ci-CD-docker-swarm
version: '3.4'
networks:
smstake:
ipam:
config:
- subnet: 10.0.10.0/24
services:
db:
image: mysql:5.7
networks:
- smstake
ports:
- "3306"
env_file:
- configuration.env
environment:
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
MYSQL_DATABASE: ${DB_NAME}
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${DB_PASSWORD}
volumes:
- mysql_data:/var/lib/mysql
deploy:
mode: replicated
replicas: 1
app:
image: SMSTAKE_VERSION
ports:
- 8000:80
networks:
- smstake
depends_on:
- db
deploy:
mode: replicated
replicas: 2
Run Code Online (Sandbox Code Playgroud)
我面临的问题. 1.虽然当我检查服务日志时服务处于运行状态,但我可以看到仅在一个节点中成功迁移而在另一个节点中没有运行.请参阅下面的日志
cmd= ["sudo", "cat", "{filepath}".format(filepath=filepath), "|","egrep", "-v","\'{filteruser}\'".format(filteruser=filteruser)]
Run Code Online (Sandbox Code Playgroud)
fileformat和filteruser也可以是空白的
[plugin_haproxy]
user= tara
host=localhost
filepath=/etc/haproxy/haproxy.global.inc
filter=
Run Code Online (Sandbox Code Playgroud)
这是我想在子进程上运行的命令,用pdb检查上面的变量值显示波纹管值并且看起来很棒
['sudo', 'cat', '/etc/haproxy/haproxy.global.inc', '|', 'egrep', '-v', "''"]
Run Code Online (Sandbox Code Playgroud)
Manullay运行代码sudo cat /etc/haproxy/haproxy.global.inc | 终端上的egrep -v"''"很棒
为什么子进程无法处理它.
"cat:|:没有这样的文件或目录\n \ncat:egrep:没有这样的文件或目录\n \ncat:
我正在尝试将以下docker-compose部署到docker swarm集群中.
version: '3.2'
services:
jenkins:
image: jenkins/jenkins:lts
ports:
- 8080:8080
volumes:
- ./data_jenkins:/var/jenkins_home
deploy:
mode: replicated
replicas: 1
Run Code Online (Sandbox Code Playgroud)
我确实在docker -compose所在的相同位置有data_jenkins,并将该路径作为卷传递.但为什么抛出源路径不存在.究竟是什么问题.
此外,如果目录不存在-v应该创建它正确.为什么不呢?
我正在尝试使2个服务通过AWS ECS服务中的服务发现终端节点进行通信。
例:
Service1:运行任务定义以运行nginx和phpfpm
Service2:运行任务定义以运行Redis
现在,我需要使service1容器与service2容器通信
根据互联网上的文档和资源。这是我所做的,无法满足需要。
现在,当使用服务发现端点时,通常采用以下格式
service_discovery_service_name.service_discovery_namespace.
错误日志显示,无法解析名称。
docker ×4
docker-stack ×3
docker-swarm ×3
prometheus ×2
python ×2
alert ×1
amazon-ecs ×1
boto ×1
devops ×1
laravel ×1
laravel-5.3 ×1
monitoring ×1
php ×1
slack ×1
slack-api ×1
subprocess ×1