Reddit DevOps
268 subscribers
2 photos
31K links
Reddit DevOps. #devops
Thanks @reddit2telegram and @r_channels
Download Telegram
Is there like a ELI5 for Hashicorp Consul for someone who is not using kubernetes but rather docker compose?

I have been trying to wrap around what Hashicorp Consul does but I just cannot join the dots with my home lab where at the moment I have Pi-4s that are running docker compose files?

Is Consul NOT meant for compose?

https://redd.it/11nvyqa
@r_devops
Feeling burnt out

Good day y’all.

Im feeling a bit… run down. A little bit, tired, exhausted and generally feel beaten.

I’m a senior Devops engineer, I do everthing you’d expect me to do. I’m happy where I am, great people, great company, but there are a few things that’s driving me into the ground.

The first thing is meetings. Oh meetings. My day is probably 50 - 70% meetings. Meetings that could easily be a note or message in teams. I’m told I’m needed, and I ask for the reasoning. When I don’t get it, I decline. When I decline I’m bombarding with messages on teams asking why. Ugh. So I join.
Last week I was asked why I declined a meeting, even though my calendar said I was free. Like… what?! Just because the calendar has a free slot, doesn’t mean I’m available. I have work do. If I’m in meetings all the time, I’ll never get work done… which I don’t.

Secondly. Everything is urgent to everyone. I’m exhausted. I have projects to get out, which are urgent, and I’m fighting fires.

Last but not least, my team, they’re great people, but boy they do not understand …. Anything. I have to hold their hands on everything. Asking me about errors that could be easily googled. Asking me how to do X in bash. How to do Y in Kubernetes. Guys, use your initiative and go and do your own research.

I feel like I’m drowning.

Devs don’t care about how to support their application whilst it’s in production. They don’t care about the disparate characteristics of VMs and pods, so code is a complete mess and doesn’t function correctly in Kubernetes. (Why are we running hour long synchronous processes in a pod and wondering why clients complain when the autoscaler kills it)

Im just, burnt out I think. I need some encouragement.

https://redd.it/11o18cn
@r_devops
How are you handling Terraform & Dev accounts?

Curious to how others are enforcing their engineers to go through Terraform when creating resources in a Dev or any lower env account.

The number one complaint I get is, "writing everything through Terraform is slow" and they'd rather experiment quickly on the console, then move onto Terraform.

However, we need some type of process in place.

I want to restrict people from doing changes through the console, but at the same time, I don't want to hamper their ability to POC or experiment.

Any ideas?

https://redd.it/11o0gos
@r_devops
Scaling java deployment on Kubernetes based on heap memory utilization?

How to monitor and trigger scaling on heap memory utilization? If my heap memory average utilization across pods is set to like 2GB I want to scale if heap memory gets to like 80% as I'm seeing heap space issues.

https://redd.it/11o3t0x
@r_devops
Container Certification

I'm debating between CKA and a Red Hat Containerization cert. Is there any strong argument to go with Red hat as opposed to CKA?

I'm a non-IT guy looking to break into DevOps or SRE. For what it's worth, I have RHCSA, doing Sec+ exam in a couple of days, and doing RHCE exam in a couple of weeks. I'm already leaning Red Hat for the purposes of working toward RHCA in Dev Ops or Open Hybrid Cloud.

https://redd.it/11nuq66
@r_devops
Help me understand networking of kubernetes + wireguard

So, here’s the situation:

I have 3 virtual machines(HyperV), let’s call them A,B and C on my computer.

I also have 2 VMs set up on Azure, let's call them D and E, so I thought it would be cool idea to setup a VPN using wireguard to create a private network for all of those machines. I've created 192.168.20.0/24 private subnet using those configs:


Interface
PrivateKey = <privatekey>

Address = 192.168.10.3/24

ListenPort = 51194

SaveConfig = false
PostUp = /etc/wireguard/helper/add-nat-routing.sh
PostDown = /etc/wireguard/helper/remove-nat-routing.sh

Peer
PublicKey = <pubkey>
AllowedIPs = 192.168.10.2/32

<other peers...>

On the server(machine D).
And

Interface
PrivateKey = <private key>

Address = 192.168.10.2/24

Peer
PublicKey = <pubkey>

AllowedIPs = 0.0.0.0/0

Endpoint = <ip address>:51194

PersistentKeepalive = 15

On the client(machine A).

&#x200B;

Everything worked smoothly, but then I wanted to create a kubernetes cluster(my first time ever) on machine A. I used

&#x200B;

sudo kubeadm init --pod-network-cidr=192.168.10.0/24

and that's when the problems started. I was no longer able to connect/ping from machine D to A, and vice versa. I figured out that there has to be a problem with iptables, and after some looking I figured out that packets are being dropped because of


-A KUBE-FIREWALL -m comment --comment "kubernetes firewall for dropping marked packets" -m mark --mark 0x8000/0x8000 -j DROP

Mark "0x8000/0x8000" seems to be set in

&#x200B;

-A KUBE-MARK-DROP -j MARK --set-xmark 0x8000/0x8000

except... there's no rule that would actually jump there! This left me rather baffled and after some searching I discovered that if I replace AllowedIPs = 0.0.0.0/0 with AllowedIPs = 192.168.10.0/24 I can connect with machine A again.

I searched a little more and found that wireguard marks packets with fwmark 0xca6c, so that they can be identified when going through ip rules. If I'm understanding -m mark documentation correctly.

! --mark value/mask Matches packets with the given unsigned mark value (if a mask is specified, this is logically ANDed with the mask before the comparison).

Soo since ANDing 0x8000 with 0x8000 seems redundant I think that "this" refers to the value of the mask on the packet? In this case 0xca6c | 0x8000 would equal 0x8000, which would make the packet match DROP condition, but that would still leave me with question as to why changing AllowedIPs helps. Is wireguard traffic in that case completely local and so it's not a subject to iptables rules?

&#x200B;

So, does anyone have any thoughts on that? Am I correct in my assumptions on that last paragraphs, or am I completely misunderstanding everything?

&#x200B;

And also, what is KUBE-MARK-DROP for, since it appears to not be used at all? Will it be used later on as I add more services?

&#x200B;

Also, here's the entire iptables configuration, if it's needed:

&#x200B;


# Generated by iptables-save v1.8.7 on Thu Mar 9 11:45:10 2023
mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:KUBE-IPTABLES-HINT - [0:0]
:KUBE-KUBELET-CANARY - [0:0]
:KUBE-PROXY-CANARY - [0:0]
COMMIT
# Completed on Thu Mar 9 11:45:10 2023
# Generated by iptables-save v1.8.7 on Thu Mar 9 11:45:10 2023
filter
:INPUT ACCEPT 2631617:9241306330
:FORWARD ACCEPT 2700:348185
:OUTPUT ACCEPT 2609743:9125831887
:KUBE-EXTERNAL-SERVICES - 0:0
:KUBE-FIREWALL - 0:0
:KUBE-FORWARD - 0:0
:KUBE-KUBELET-CANARY - 0:0
:KUBE-NODEPORTS - 0:0
:KUBE-PROXY-CANARY - 0:0
:KUBE-PROXY-FIREWALL - 0:0
:KUBE-SERVICES - 0:0
-A INPUT -m conntrack --ctstate NEW -m comment --comment "kubernetes
Help me understand networking of kubernetes + wireguard

So, here’s the situation:

I have 3 virtual machines(HyperV), let’s call them A,B and C on my computer.

I also have 2 VMs set up on Azure, let's call them D and E, so I thought it would be cool idea to setup a VPN using wireguard to create a private network for all of those machines. I've created [192.168.20.0/24](https://192.168.20.0/24) private subnet using those configs:


[Interface]
PrivateKey = <privatekey>

Address = 192.168.10.3/24

ListenPort = 51194

SaveConfig = false
PostUp = /etc/wireguard/helper/add-nat-routing.sh
PostDown = /etc/wireguard/helper/remove-nat-routing.sh

[Peer]
PublicKey = <pubkey>
AllowedIPs = 192.168.10.2/32

<other peers...>

On the server(machine D).
And

[Interface]
PrivateKey = <private key>

Address = 192.168.10.2/24

[Peer]
PublicKey = <pubkey>

AllowedIPs = 0.0.0.0/0

Endpoint = <ip address>:51194

PersistentKeepalive = 15

On the client(machine A).

&#x200B;

Everything worked smoothly, but then I wanted to create a kubernetes cluster(my first time ever) on machine A. I used

&#x200B;

sudo kubeadm init --pod-network-cidr=192.168.10.0/24

and that's when the problems started. I was no longer able to connect/ping from machine D to A, and vice versa. I figured out that there has to be a problem with iptables, and after some looking I figured out that packets are being dropped because of


-A KUBE-FIREWALL -m comment --comment "kubernetes firewall for dropping marked packets" -m mark --mark 0x8000/0x8000 -j DROP

Mark "0x8000/0x8000" seems to be set in

&#x200B;

-A KUBE-MARK-DROP -j MARK --set-xmark 0x8000/0x8000

except... there's no rule that would actually jump there! This left me rather baffled and after some searching I discovered that if I replace AllowedIPs = [0.0.0.0/0](https://0.0.0.0/0) with AllowedIPs = [192.168.10.0/24](https://192.168.10.0/24) I can connect with machine A again.

I searched a little more and found that wireguard marks packets with fwmark 0xca6c, so that they can be identified when going through ip rules. If I'm understanding -m mark documentation correctly.

[!] --mark value[/mask] Matches packets with the given unsigned mark value (if a mask is specified, this is logically ANDed with the mask before the comparison).

Soo since ANDing 0x8000 with 0x8000 seems redundant I think that "this" refers to the value of the mask on the packet? In this case 0xca6c | 0x8000 would equal 0x8000, which would make the packet match DROP condition, but that would still leave me with question as to why changing AllowedIPs helps. Is wireguard traffic in that case completely local and so it's not a subject to iptables rules?

&#x200B;

So, does anyone have any thoughts on that? Am I correct in my assumptions on that last paragraphs, or am I completely misunderstanding everything?

&#x200B;

And also, what is KUBE-MARK-DROP for, since it appears to not be used at all? Will it be used later on as I add more services?

&#x200B;

Also, here's the entire iptables configuration, if it's needed:

&#x200B;


# Generated by iptables-save v1.8.7 on Thu Mar 9 11:45:10 2023
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:KUBE-IPTABLES-HINT - [0:0]
:KUBE-KUBELET-CANARY - [0:0]
:KUBE-PROXY-CANARY - [0:0]
COMMIT
# Completed on Thu Mar 9 11:45:10 2023
# Generated by iptables-save v1.8.7 on Thu Mar 9 11:45:10 2023
*filter
:INPUT ACCEPT [2631617:9241306330]
:FORWARD ACCEPT [2700:348185]
:OUTPUT ACCEPT [2609743:9125831887]
:KUBE-EXTERNAL-SERVICES - [0:0]
:KUBE-FIREWALL - [0:0]
:KUBE-FORWARD - [0:0]
:KUBE-KUBELET-CANARY - [0:0]
:KUBE-NODEPORTS - [0:0]
:KUBE-PROXY-CANARY - [0:0]
:KUBE-PROXY-FIREWALL - [0:0]
:KUBE-SERVICES - [0:0]
-A INPUT -m conntrack --ctstate NEW -m comment --comment "kubernetes
load balancer firewall" -j KUBE-P
-A INPUT -m comment --comment "kubernetes health check service ports" -j KUBE-NODEPORTS
-A INPUT -m conntrack --ctstate NEW -m comment --comment "kubernetes externally-visible service portal
-A INPUT -j KUBE-FIREWALL
-A FORWARD -m conntrack --ctstate NEW -m comment --comment "kubernetes load balancer firewall" -j KUBE
-A FORWARD -m comment --comment "kubernetes forwarding rules" -j KUBE-FORWARD
-A FORWARD -m conntrack --ctstate NEW -m comment --comment "kubernetes service portals" -j KUBE-SERVIC
-A FORWARD -m conntrack --ctstate NEW -m comment --comment "kubernetes externally-visible service port
-A OUTPUT -m conntrack --ctstate NEW -m comment --comment "kubernetes load balancer firewall" -j KUBE-
-A OUTPUT -m conntrack --ctstate NEW -m comment --comment "kubernetes service portals" -j KUBE-SERVICE
-A OUTPUT -j KUBE-FIREWALL
-A KUBE-FIREWALL ! -s 127.0.0.0/8 -d 127.0.0.0/8 -m comment --comment "block incoming localnet connect
-A KUBE-FIREWALL -m comment --comment "kubernetes firewall for dropping marked packets" -m mark --mark
-A KUBE-FORWARD -m conntrack --ctstate INVALID -j DROP
-A KUBE-FORWARD -m comment --comment "kubernetes forwarding rules" -m mark --mark 0x4000/0x4000 -j ACC
-A KUBE-FORWARD -m comment --comment "kubernetes forwarding conntrack rule" -m conntrack --ctstate REL
-A KUBE-SERVICES -d 10.96.0.10/32 -p udp -m comment --comment "kube-system/kube-dns:dns has no endpoin
-A KUBE-SERVICES -d 10.96.0.10/32 -p tcp -m comment --comment "kube-system/kube-dns:dns-tcp has no end
-A KUBE-SERVICES -d 10.96.0.10/32 -p tcp -m comment --comment "kube-system/kube-dns:metrics has no end
COMMIT
# Completed on Thu Mar 9 11:45:10 2023
# Generated by iptables-save v1.8.7 on Thu Mar 9 11:45:10 2023
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:KUBE-KUBELET-CANARY - [0:0]
:KUBE-MARK-DROP - [0:0]
:KUBE-MARK-MASQ - [0:0]
:KUBE-NODEPORTS - [0:0]
:KUBE-POSTROUTING - [0:0]
:KUBE-PROXY-CANARY - [0:0]
:KUBE-SEP-CQRAHCCC7XPEWYB2 - [0:0]
:KUBE-SERVICES - [0:0]
:KUBE-SVC-NPX46M4PTMTKRN6Y - [0:0]
-A PREROUTING -m comment --comment "kubernetes service portals" -j KUBE-SERVICES
-A OUTPUT -m comment --comment "kubernetes service portals" -j KUBE-SERVICES
-A POSTROUTING -m comment --comment "kubernetes postrouting rules" -j KUBE-POSTROUTING
-A POSTROUTING -s 172.25.144.0/20 -j MASQUERADE #for forwarding traffic from B and C through A
-A KUBE-MARK-DROP -j MARK --set-xmark 0x8000/0x8000
-A KUBE-MARK-MASQ -j MARK --set-xmark 0x4000/0x4000
-A KUBE-POSTROUTING -m mark ! --mark 0x4000/0x4000 -j RETURN
-A KUBE-POSTROUTING -j MARK --set-xmark 0x4000/0x0
-A KUBE-POSTROUTING -m comment --comment "kubernetes service traffic requiring SNAT" -j MASQUERADE --r
-A KUBE-SEP-CQRAHCCC7XPEWYB2 -s 192.168.0.2/32 -m comment --comment "default/kubernetes:https" -j KUBE
-A KUBE-SEP-CQRAHCCC7XPEWYB2 -p tcp -m comment --comment "default/kubernetes:https" -m tcp -j DNAT --to-destination 192.168.0.2:6443
-A KUBE-SERVICES -d 10.96.0.1/32 -p tcp -m comment --comment "default/kubernetes:https cluster IP" -m tcp --dport 443 -j KUBE-SVC-NPX46M4PTMTKRN6Y
-A KUBE-SERVICES -m comment --comment "kubernetes service nodeports; NOTE: this must be the last rule in this chain" -m addrtype --dst-type LOCAL -j KUBE-NODEPORTS
-A KUBE-SVC-NPX46M4PTMTKRN6Y ! -s 192.168.10.0/24 -d 10.96.0.1/32 -p tcp -m comment --comment "default/kubernetes:https cluster IP" -m tcp --dport 443 -j KUBE-MARK-MASQ
-A KUBE-SVC-NPX46M4PTMTKRN6Y -m comment --comment "default/kubernetes:https -> 192.168.0.2:6443" -j KUBE-SEP-CQRAHCCC7XPEWYB2
COMMIT
# Completed on Thu Mar 9 11:45:10 2023

https://redd.it/11nsfj5
@r_devops
Hiring developers

Just wondering what the cost is to hire developers to create an MVP? Any insight on market rates, payment structure, and any other information would be greatly appreciated.

https://redd.it/11nw41a
@r_devops
Is there software to push my Dev server to my main server?


I have a Development game server and a main game server. I would like to find something like gitlab to track issues and push my development server changes to the main server. I need to be able to upload zip files and decompress them all while keeping track of what happens. Is there any software out there like gitlab thats is free and could accomplish this?

Thanks in advance

https://redd.it/11nrfer
@r_devops
The Impact of Developer Happiness on Productivity

Even in an era of unprecedented tech layoffs, most companies are still eager to find and retain top software developer talent. What’s more, many firms are discovering that they lack direct insight into their development teams’ needs and priorities. As a result, some of them are struggling to keep their developers happy and thus productive. A recent Zenhub report found, for the first time, a quantitative link between developer happiness and productivity, including what keeps developers in the same position instead of moving on to another job at the first sign of perceived trouble.

Software Development Happiness

The 2022 Software Developer Happiness report is based on a survey of 380 software professionals from a host of different organization types. In brief, the survey found that two of the biggest contributors to devs being unhappy in their roles were a lack of work/life balance and not working on what’s perceived as “quality work.”

Even with a looming recession and thousands of layoffs, there remains a dearth of senior software development talent. For more junior talent, there will be more available than in previous, pre-pandemic years. As companies strive to do more with less, they still require development teams to build their products and/or the applications that drive their business. Setting up more junior teams for success via collaboration and productivity tools will be key to navigating this new environment.

Given these findings, if organizations want to retain developer talent, they still need to make sure developers are working on meaningful projects and that they’re able to achieve that work in a way that balances the needs of the business with the needs of the individual.

An ideal example of this phenomenon is the developer tool ecosystem companies make available to their teams. While the growth of this ecosystem has been a net positive for developers, it has also created a lot of tool sprawl and significant integration challenges.

Less Time on Application Development

Stephen O’Grady, an analyst at RedMonk, an analyst firm focused explicitly on software developers, talked a lot about this through a term he coined called the “developer experience gap.” He is referring to developers spending more time integrating tools than working on application development or application code. That integration work comes at a real cost. It means developers are spending less time on application development, are having to work longer hours or do the integration work off the side of the desk.

The real bottom line to these survey results is that developers are happiest and stay at their jobs longer when empowered to focus on building code. This means spending less time interacting with management, attending meetings or resolving and integrating multiple solutions. The report’s results also emphasized the importance of work-life balance in encouraging developers to stay at their current job longer, while poor work-life balance accelerated the hunt for another job. These insights into developer retention are especially critical as, according to the report, 71% of developers haven’t decided how long they’ll stay with their current employer. The report also suggested that 33% of developers have stayed in a job longer than usual due to the pandemic, which could mean an increase in developer turnover when the pandemic comes to an end.

Another key finding is that collaboration challenges are viewed as the biggest impediment to developer productivity. Delays in feedback result in lost productivity; nearly 70% lose a minimum of three hours per week per developer and 75% spend at least an hour per week on reporting instead of writing code.

Finally, developers said their biggest priority is ensuring their software meets business demands, and most developers want high-performance productivity tools. In fact, 93% of developers believed these tools are critical to their success.

Increase Developer
Happiness

So what can team leads to alleviate these issues? For both team leads and more senior management, the biggest way to increase developer happiness is simply to let them focus on coding. Developers like to showcase their skills, so encouraging them to work on interesting and impactful projects that challenge their skill sets is a great way to boost morale. Ensuring an appropriate work-life balance and paying the developers competitively are the other two recommendations for improving developer retention.

Additionally, senior management should take another look at how they are compensating their teams. Financial compensation will always be a critical element, but we should expect to see companies shift their focus to programs and benefits that their employees truly need. Particularly given the somewhat chaotic year in 2022 and continuing in 2023, those in the technology industry will shift to valuing organizational stability over just a paycheck. An improved focus on mental health, conflict resolution and work/life balance will also be a big part of attracting the appropriate talent to an organization.

Source

https://redd.it/11nlocg
@r_devops
Running Jenkins as Docker, but cannot execute docker commands from inside

Hi,

I've deployed Jenkins as Docker container in my local. But, when I try to execute job with docker command, it simply doesn't work.

+ docker ps
Failed to initialize: unable to resolve docker endpoint: open /certs/client/ca.pem: no such file or directory

What I am trying to do?

I have installed Docker in my host machine and want it to be accessible inside a docker container that is running Jenkins. I really don't get the .sock thing.

&#x200B;

Installation Followed: https://www.jenkins.io/doc/book/installing/docker/Built Jenkins docker image using Dockerfile (as it comes with blue ocean).

Thanks.

https://redd.it/11oeej1
@r_devops
I’m writing a review article about popular WAFs for open-appsec. If you use any of the WAF solutions mentioned below, I'd love to feature your expert take on a few questions and link to your book, website, LinkedIn profile, YT channel.

WAF solutions: Cloudflare, Imperva, Barracuda Networks, Amazon Web Services, Akamai Kona, Fortiweb, Azure WAF, Prophaze, F5 AWAF, NGINX app protect, AppTrana, Sucuri, WAF Citrix WAF, NAXSI WAF, ModSecurity, Ironbee WAF, Octopus WAF, NGINX WAF (open-source), Coraza, Shadow Daemon, Web Knight, Vulture WAF, Haltdos WAF CE.

Questions:

What single feature made the waf solution you use to stand out?
What are the pros of the waf solution you use (please list at least three)
What single feature makes you most uncomfortable about the waf solution you use
Please list three cons of the waf solution you use.
Please share a screenshot of the dashboard of the WAF solution you use (please blur all sensitive information).
Feel free to recommend any good WAF solution that isn't on this list. Thank you.

&#x200B;

PS: The aim of this is to get unbiased opinions about these WAF solutions. I'll be very grateful if you help me out. I'll be in the comment section.

https://redd.it/11ku18l
@r_devops
SigNoz the open-source DataDog alternative

Hey,

I've written a small article on SigNoz, an open-source monitoring tool for logs, metrics and traces all in one place. While it's not (yet) as mature as DataDog the developers are really active and are building not just a great product but also a great community.


https://www.infrastructureposts.com/p/signoz-the-open-source-datadog-alternative

https://redd.it/11oh5j7
@r_devops
In Github Actions, when you download an Artifact, do you need to reference it's path to use it in a Deployment?

I've got a solution I'm trying to fix (translating an Azure DevOps pipeline over to Github Actions which is a bit more a nightmare) but I want to download an artifact and use it's contents to deploy to Azure.

In the final "Deploy to staging" step, am I setting the package path incorrectly, should I reference the downloaded artifact? The documentation is pretty bad on this so any help would be welcomed.

I'm not able to download the actual artifact (it says it's downloaded so no files appear). Thanks.

- name: Compress Solution File
run: |
$sourcePath = "${{ env.RUNNER_TEMP }}\WebAppContent"
$destinationPath = "${{ env.RUNNER_TEMP }}\WebAppContent.zip"
Add-Type -AssemblyName System.IO.Compression.FileSystem
[System.IO.Compression.ZipFile]::CreateFromDirectory($sourcePath, $destinationPath)

- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: drop
path: '${{ env.RUNNER_TEMP }}\WebAppContent.zip'

- name: Download artifact
uses: actions/download-artifact@v3
with:
name: drop
path: '${{ env.RUNNER_TEMP }}'

- name: Log in with Azure
uses: azure/login@v1
with:
creds: '${{ secrets.AZURE_CREDENTIALS }}'

- name: Deploy to uat-staging # deploys to uat-staging
id: deploy-to-uat-staging
uses: azure/webapps-deploy@v2
with:
app-name: Webapp
slot-name: staging
package: "."
publish-profile: ${{ secrets.AZURE_WEBAPP_STAGING_PUBLISH_PROFILE }}

&#x200B;

https://redd.it/11oiv98
@r_devops
Is Roadmap.sh's Devops Roadmap good for beginners?

So, I have finally decided to be a devops after researching a lot of thing as to what I should choose in software development career, so, I want to ask if Roadmap.sh website's Roadmap for devops a good thing to follow? If not please provide some tips of point me in right direction.

Here's the Roadmap I am referring Devops Roadmap

https://redd.it/11oj8ka
@r_devops
What job am I doing?

I work labelled as a software engineer 1


Things I do/ have done:

1. patch servers
2. develop apis(spring boot)
3. aws solutions (can configure bunch of stuff manually, terraform in noob phase)
4. testing framework
5. CI/CD e2e flow
6. ansible automation
7. slowly create awareness on unit test case and automating testing importance
8. now taking up nifi automation and stream lining it

&#x200B;

This all made me feel like a any key guy, I don't have specialization in any one. They don't even task me with development work, I have to check with all PM to see if any dev work is available, if no dev work I just work on process improvement POC, BAU and KLO work


Is this a good practice? DevOps is a broad term and includes lot of stuff but is it ok to not specialize in one thing. will this approach of work make me a liability when searching new jobs


I may start applying for new job and just wanted opinion on understanding type of work I'm doing and tailoring my resume and job application

https://redd.it/11oh4el
@r_devops